TryGhost/Ghost · error · Error
Error going to signin page (${response.status})
Error message
Error going to signin page (${response.status}) What it means
Same navigation as 109, but goto() returned a response whose .ok is false (HTTP status >= 400). The signin page itself returned an error status (404, 500, 502, etc.). This points at the server, not the network: the request reached Ghost but Ghost (or the gateway) returned an error page.
Source
Thrown at e2e/helpers/pages/admin/login-page.ts:45
async requestPasswordReset(email: string) {
await this.emailAddressField.waitFor({state: 'visible'});
await this.emailAddressField.fill(email);
await this.forgotButton.click();
}
async logout() {
await this.page.goto('/ghost/#/signout');
await this.signInButton.waitFor({state: 'visible'});
}
async waitForLoginPageAfterUserCreated(): Promise<void> {
const response = await this.goto();
if (!response) {
throw new Error('Error going to signin page (no response)');
}
if (!response.ok) {
throw new Error(`Error going to signin page (${response.status})`);
}
}
}
View on GitHub (pinned to 47d8b0e2ad)
Solutions
- Inspect response.status — 5xx points to Ghost/gateway logs; 4xx to routing/assets.
- Check Ghost container logs and the admin build artifacts in the image (apps/ember-admin assets).
- Confirm baseURL points at /ghost and the gateway routes to the right upstream.
- Re-run waitForReady() before navigating; ensure setup completed.
Example fix
// before
if (!response.ok) throw new Error(`Error going to signin page (${response.status})`);
// after
if (!response.ok) {
const body = await response.text().catch(() => '<no body>');
throw new Error(`Signin page ${response.status}: ${body.slice(0, 200)}`);
} Defensive patterns
Strategy: try-catch
Validate before calling
const r = await this.goto();
if (r && !r.ok) {
// log status + body before the fixture throws, so the cause is visible
const body = await r.text().catch(() => '<no body>');
throw new Error(`signin ${r.status}: ${body.slice(0,200)}`);
} Try / catch
const response = await this.goto();
if (!response) throw new Error('Error going to signin page (no response)');
if (!response.ok) {
const body = await response.text().catch(() => '<no body>');
throw new Error(`Error going to signin page (${response.status}): ${body.slice(0,200)}`);
} Prevention
- Inspect the HTTP status — 5xx points to Ghost/gateway logs, 4xx to routing/assets.
- Confirm the admin build artifacts are present in the image.
- Run waitForReady before navigating so Ghost is fully booted.
When it happens
Trigger: Ghost admin route returns 500 due to a boot error. Gateway returns 502 because the upstream Ghost container is misconfigured. /ghost/#/signin path returns 404 because admin assets are missing (bad image). Maintenance or rate-limit (429/503) responses.
Common situations: Broken admin build served by the image; gateway misroute; Ghost in a partially-booted state answering with errors; wrong baseURL path.
Related errors
- Error going to signin page (no response)
- Portal popup did not open
- [e2e fixture] resetEnvironment() must be called before resol
- post.email.error
- Cannot create without a persistence adapter. Use buildMany()
AI-assisted analysis of TryGhost/Ghost@47d8b0e2ad (2026-08-13).
Data as JSON: /api/errors/f07e1f5b1aff922b.
Report an issue: GitHub.