diff --git a/e2e/i18n.spec.ts b/e2e/i18n.spec.ts index da5be4e19..d075a61ba 100644 --- a/e2e/i18n.spec.ts +++ b/e2e/i18n.spec.ts @@ -1,6 +1,12 @@ import { test, expect, Page } from "@playwright/test"; import App from "./support/app"; +test.afterEach(async ({ page, context }) => { + const app = new App(page, context); + // Ensure English is set after each locale change to avoid any leaks to other tests. + await app.setOption("locale", "en"); +}); + test("Displays translation on desktop", async ({ page, context }) => { const app = new App(page, context); await app.goto(); diff --git a/e2e/support/app.ts b/e2e/support/app.ts index d0d443b27..290d9c420 100644 --- a/e2e/support/app.ts +++ b/e2e/support/app.ts @@ -5,6 +5,8 @@ interface GotoOpts { isMobile?: boolean; } +const BASE_URL = "http://127.0.0.1:8082"; + export default class App { readonly page: Page; readonly context: BrowserContext; @@ -27,7 +29,7 @@ export default class App { async goto(opts: GotoOpts = {}) { await this.context.addCookies([ { - url: "http://127.0.0.1:8082", + url: BASE_URL, name: "trilium-device", value: opts.isMobile ? "mobile" : "desktop" } @@ -92,4 +94,17 @@ export default class App { }, command); } + async setOption(key: string, value: string) { + const csrfToken = await this.page.evaluate(() => { + return (window as any).glob.csrfToken; + }); + + expect(csrfToken).toBeTruthy(); + await expect(await this.page.request.put(`${BASE_URL}/api/options/${key}/${value}`, { + headers: { + "x-csrf-token": csrfToken + } + })).toBeOK(); + } + }