test(e2e): run the SvelteKit SPA Playwright suite in CI
The e2e CI job ran the legacy `scenarios/*` specs against the vanilla `static/` frontend that upstream has since removed, so it could never pass. Point CI at this repo's SvelteKit SPA suite (tests/e2e/spa) and wire up what it needs: - CI: build the release binary with `--features plugins` (the admin Plugins-tab specs exercise the WASM runtime) and run `npm run test:coverage`, building the instrumented SPA with COVERAGE=1 VITE_E2E=1 so the server serves the data-testid-instrumented build the specs drive. - Coverage harness: target 127.0.0.1 instead of `localhost` (which resolves to ::1 first on CI runners while the server binds IPv4, so readiness never connected) and poll `/ready` for webServer readiness; tee start-server-spa.sh output to a log surfaced by an always-run CI step for diagnostics. - Files page: restore a persistent breadcrumb home link (buildCrumbs returns only the path folders, so there was no "go home" affordance), and fix the `?file=` deep-link race where the viewer→URL effect stripped the param before the listing loaded — a bookmarked preview link now opens the viewer. All 101 spa specs pass locally.
This commit is contained in:
@@ -202,9 +202,11 @@ test('breadcrumb navigates back to home', async ({ page }) => {
|
||||
const folderName = uniq('Crumb');
|
||||
const folder = await apiCreateFolder(page, folderName);
|
||||
await page.goto(`/files/${folder.id}`);
|
||||
// Breadcrumb home link returns to the root listing.
|
||||
// Breadcrumb home link leaves the subfolder for the root listing. Bare /files
|
||||
// canonicalizes to the user's drive root, where the just-created folder lives.
|
||||
await page.getByTestId('files-breadcrumb-home-link').click();
|
||||
await expect(page).toHaveURL(/\/files\/?$/);
|
||||
await expect(page).not.toHaveURL(new RegExp(folder.id));
|
||||
await expect(page.getByTestId(folderName)).toBeVisible({ timeout: 15_000 });
|
||||
});
|
||||
|
||||
test('open an image in the viewer and use the zoom controls', async ({ page }) => {
|
||||
|
||||
@@ -12,5 +12,5 @@ export default async function globalSetup() {
|
||||
fs.rmSync(nycDir, { recursive: true, force: true });
|
||||
fs.mkdirSync(nycDir, { recursive: true });
|
||||
|
||||
await seedAdmin('http://localhost:8088');
|
||||
await seedAdmin('http://127.0.0.1:8088');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user