diff --git a/tests/homolog/ui/auth.setup.ts b/tests/homolog/ui/auth.setup.ts new file mode 100644 index 0000000000..e38f11be4a --- /dev/null +++ b/tests/homolog/ui/auth.setup.ts @@ -0,0 +1,13 @@ +import { test as setup, expect } from "@playwright/test"; +import { STORAGE_STATE } from "./playwright.config"; + +// Locators confirmados em src/app/login/page.tsx: dentro de um +//
com . +setup("autentica e salva storageState", async ({ page }) => { + await page.goto("/login"); + await page.locator('input[type="password"]').fill(process.env.HOMOLOG_ADMIN_PASSWORD!); + await page.locator('button[type="submit"]').click(); + await page.waitForURL(/\/dashboard/); + await expect(page).toHaveURL(/dashboard/); + await page.context().storageState({ path: STORAGE_STATE }); +}); diff --git a/tests/homolog/ui/playwright.config.ts b/tests/homolog/ui/playwright.config.ts new file mode 100644 index 0000000000..f6afbbb7b4 --- /dev/null +++ b/tests/homolog/ui/playwright.config.ts @@ -0,0 +1,34 @@ +import { defineConfig } from "@playwright/test"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const HERE = path.dirname(fileURLToPath(import.meta.url)); +export const STORAGE_STATE = path.join(HERE, ".auth", "admin.json"); + +export default defineConfig({ + testDir: ".", + timeout: 60_000, + retries: 1, + workers: 4, + reporter: [ + ["list"], + [ + "playwright-ctrf-json-reporter", + { outputDir: "../../../homolog-report", outputFile: "ui-ctrf.json" }, + ], + ], + use: { + baseURL: process.env.HOMOLOG_BASE_URL || "http://192.168.0.15:20128", + trace: "retain-on-failure", + screenshot: "only-on-failure", + }, + projects: [ + { name: "setup", testMatch: /auth\.setup\.ts/ }, + { + name: "homolog", + testMatch: /.*\.spec\.ts/, + dependencies: ["setup"], + use: { storageState: STORAGE_STATE }, + }, + ], +});