ci: bump skill matrix parser test timeout; install playwright in isolated dir
CI / Architecture Guardrails (push) Successful in 19m4s
CI / Assistant Split Regression (push) Successful in 20m21s
CI / Lint (push) Successful in 21m52s
CI / Typecheck (push) Successful in 22m37s
CI / Unit Tests (push) Successful in 7m48s
CI / Build (push) Successful in 5m16s
CI / Fresh-Linux Docker Deploy (push) Failing after 12m42s
CI / E2E Tests (push) Failing after 35m15s
CI / Release Images (push) Has been skipped
CI / Architecture Guardrails (push) Successful in 19m4s
CI / Assistant Split Regression (push) Successful in 20m21s
CI / Lint (push) Successful in 21m52s
CI / Typecheck (push) Successful in 22m37s
CI / Unit Tests (push) Successful in 7m48s
CI / Build (push) Successful in 5m16s
CI / Fresh-Linux Docker Deploy (push) Failing after 12m42s
CI / E2E Tests (push) Failing after 35m15s
CI / Release Images (push) Has been skipped
Unit Tests flaked on QNAP: skillMatrixParser ExcelJS workbook builds exceeded the 5s default per-test timeout (runtime ~8.6s for the suite). Bumped to 30s. Docker Deploy smoke tests failed because `npm install` in the repo root tried to resolve sibling workspace:* deps (pnpm protocol, not npm-supported). Install @playwright/test into /tmp/pw-install instead and symlink the package dirs into apps/web/node_modules so the CJS require() in playwright.ci.config.ts resolves it by walking up from apps/web/.
This commit is contained in:
@@ -496,20 +496,29 @@ jobs:
|
|||||||
node-version: "20"
|
node-version: "20"
|
||||||
|
|
||||||
- name: Install Playwright and Chromium
|
- name: Install Playwright and Chromium
|
||||||
# Install locally (not -g) so the CJS require() in playwright.ci.config.ts
|
# The repo root package.json uses pnpm `workspace:*` deps which npm
|
||||||
# resolves @playwright/test by walking up from apps/web/. A global
|
# cannot resolve, so install into an isolated temp dir and symlink
|
||||||
# install puts it in /opt/hostedtoolcache/.../lib/node_modules which
|
# @playwright/test into apps/web/node_modules so playwright.ci.config.ts
|
||||||
# Node's resolver doesn't check.
|
# (CJS) can resolve it by walking up from apps/web/.
|
||||||
run: |
|
run: |
|
||||||
|
set -e
|
||||||
|
mkdir -p /tmp/pw-install
|
||||||
|
cd /tmp/pw-install
|
||||||
|
[ -f package.json ] || npm init -y >/dev/null
|
||||||
npm install --no-save --no-package-lock @playwright/test@1.49
|
npm install --no-save --no-package-lock @playwright/test@1.49
|
||||||
npx playwright install chromium --with-deps
|
cd "$GITHUB_WORKSPACE"
|
||||||
|
mkdir -p apps/web/node_modules
|
||||||
|
ln -sfn /tmp/pw-install/node_modules/@playwright apps/web/node_modules/@playwright
|
||||||
|
ln -sfn /tmp/pw-install/node_modules/playwright apps/web/node_modules/playwright
|
||||||
|
ln -sfn /tmp/pw-install/node_modules/playwright-core apps/web/node_modules/playwright-core
|
||||||
|
/tmp/pw-install/node_modules/.bin/playwright install chromium --with-deps
|
||||||
|
|
||||||
- name: Run smoke tests
|
- name: Run smoke tests
|
||||||
env:
|
env:
|
||||||
# App runs on the compose network; act_runner job is on gitea_gitea
|
# App runs on the compose network; act_runner job is on gitea_gitea
|
||||||
# (docker-compose.ci.yml attaches services to both). Override baseURL.
|
# (docker-compose.ci.yml attaches services to both). Override baseURL.
|
||||||
PLAYWRIGHT_BASE_URL: http://app:3100
|
PLAYWRIGHT_BASE_URL: http://app:3100
|
||||||
run: npx playwright test --config apps/web/playwright.ci.config.ts
|
run: /tmp/pw-install/node_modules/.bin/playwright test --config apps/web/playwright.ci.config.ts
|
||||||
|
|
||||||
- name: Upload Playwright report
|
- name: Upload Playwright report
|
||||||
if: failure()
|
if: failure()
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ async function createWorkbookBuffer(
|
|||||||
|
|
||||||
describe("skill matrix parser", () => {
|
describe("skill matrix parser", () => {
|
||||||
it("extracts employee info and merges skills by highest proficiency", async () => {
|
it("extracts employee info and merges skills by highest proficiency", async () => {
|
||||||
|
// ExcelJS dynamic import + workbook writeBuffer is slow on constrained CI runners.
|
||||||
const workbook = await createWorkbookBuffer([
|
const workbook = await createWorkbookBuffer([
|
||||||
{
|
{
|
||||||
name: "Employee Information",
|
name: "Employee Information",
|
||||||
@@ -71,7 +72,7 @@ describe("skill matrix parser", () => {
|
|||||||
},
|
},
|
||||||
]),
|
]),
|
||||||
});
|
});
|
||||||
});
|
}, 30000);
|
||||||
|
|
||||||
it("rejects duplicate headers in skill sheets", async () => {
|
it("rejects duplicate headers in skill sheets", async () => {
|
||||||
const workbook = await createWorkbookBuffer([
|
const workbook = await createWorkbookBuffer([
|
||||||
@@ -96,7 +97,7 @@ describe("skill matrix parser", () => {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
await expect(parseSkillMatrixWorkbook(workbook)).rejects.toThrow('duplicate header "item"');
|
await expect(parseSkillMatrixWorkbook(workbook)).rejects.toThrow('duplicate header "item"');
|
||||||
});
|
}, 30000);
|
||||||
|
|
||||||
it("matches role names by exact and partial matches", () => {
|
it("matches role names by exact and partial matches", () => {
|
||||||
expect(matchRoleName("Compositing", ["Producer", "Compositing"])).toBe("Compositing");
|
expect(matchRoleName("Compositing", ["Producer", "Compositing"])).toBe("Compositing");
|
||||||
|
|||||||
Reference in New Issue
Block a user