{"record":{"id":"f07e1f5b1aff922b","repo":"TryGhost/Ghost","slug":"error-going-to-signin-page-response-status","errorCode":null,"errorMessage":"Error going to signin page (${response.status})","messagePattern":"Error going to signin page \\((.+?)\\)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"e2e/helpers/pages/admin/login-page.ts","lineNumber":45,"sourceCode":"\n    async requestPasswordReset(email: string) {\n        await this.emailAddressField.waitFor({state: 'visible'});\n        await this.emailAddressField.fill(email);\n        await this.forgotButton.click();\n    }\n\n    async logout() {\n        await this.page.goto('/ghost/#/signout');\n        await this.signInButton.waitFor({state: 'visible'});\n    }\n\n    async waitForLoginPageAfterUserCreated(): Promise<void> {\n        const response = await this.goto();\n        if (!response) {\n            throw new Error('Error going to signin page (no response)');\n        }\n        if (!response.ok) {\n            throw new Error(`Error going to signin page (${response.status})`);\n        }\n    }\n}\n","sourceCodeStart":27,"sourceCodeEnd":49,"githubUrl":"https://github.com/TryGhost/Ghost/blob/47d8b0e2ad2fd4757d3bc45f46c3ac165ff8a1fe/e2e/helpers/pages/admin/login-page.ts#L27-L49","documentation":"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.","triggerScenarios":"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.","commonSituations":"Broken admin build served by the image; gateway misroute; Ghost in a partially-booted state answering with errors; wrong baseURL path.","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."],"exampleFix":"// before\nif (!response.ok) throw new Error(`Error going to signin page (${response.status})`);\n\n// after\nif (!response.ok) {\n    const body = await response.text().catch(() => '<no body>');\n    throw new Error(`Signin page ${response.status}: ${body.slice(0, 200)}`);\n}","handlingStrategy":"try-catch","validationCode":"const r = await this.goto();\nif (r && !r.ok) {\n    // log status + body before the fixture throws, so the cause is visible\n    const body = await r.text().catch(() => '<no body>');\n    throw new Error(`signin ${r.status}: ${body.slice(0,200)}`);\n}","typeGuard":null,"tryCatchPattern":"const response = await this.goto();\nif (!response) throw new Error('Error going to signin page (no response)');\nif (!response.ok) {\n    const body = await response.text().catch(() => '<no body>');\n    throw new Error(`Error going to signin page (${response.status}): ${body.slice(0,200)}`);\n}","preventionTips":["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."],"tags":["playwright","e2e","http-status","ghost-admin","navigation"],"backgroundTag":null,"analyzedSha":"47d8b0e2ad2fd4757d3bc45f46c3ac165ff8a1fe","analyzedAt":"2026-08-13T01:25:26.651Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}