Files
pleno-vue/tests/unit/playwright-quarantine.spec.js
T

44 lines
1.8 KiB
JavaScript

import { existsSync, readFileSync } from "node:fs";
import { join } from "node:path";
import { describe, expect, it } from "vitest";
const root = process.cwd();
const quarantineManifestPath = join(root, "tests/e2e/quarantine/quarantine.json");
function readQuarantineManifest() {
return JSON.parse(readFileSync(quarantineManifestPath, "utf8"));
}
describe("Playwright E2E quarantine", () => {
it("keeps quarantined specs out of the active E2E tree while replacements are introduced", () => {
const manifest = readQuarantineManifest();
expect(Array.isArray(manifest)).toBe(true);
expect(manifest.length).toBeGreaterThan(0);
for (const entry of manifest) {
expect(entry.originalPath).toMatch(/^tests\/e2e\/.+\.spec\.(?:js|ts)$/u);
expect(entry.quarantinePath).toMatch(/^tests\/e2e\/quarantine\/.+\.spec\.(?:js|ts)$/u);
expect(entry.reason).toEqual(expect.any(String));
expect(entry.removalCriteria).toEqual(expect.any(String));
expect(entry.replacementCoverage).toEqual(expect.arrayContaining([expect.stringMatching(/^tests\//u)]));
expect(existsSync(join(root, entry.originalPath))).toBe(false);
expect(existsSync(join(root, entry.quarantinePath))).toBe(true);
}
});
it("ignores quarantined specs in the active Playwright E2E config", () => {
const source = readFileSync(join(root, "playwright.config.ts"), "utf8");
expect(source).toContain('"**/quarantine/**"');
});
it("keeps component coverage wired into local and CI gates", () => {
const packageJson = JSON.parse(readFileSync(join(root, "package.json"), "utf8"));
const workflowSource = readFileSync(join(root, ".github/workflows/tests.yml"), "utf8");
expect(packageJson.scripts["test:all"]).toContain("npm run test:ct:pr");
expect(workflowSource).toContain('npm run test:ct -- --project="$MATRIX_PROJECT"');
});
});