fix: complete Playwright removal in CI deploy workflow
Drop the leftover Playwright browser install and e2e smoke test from the deployment script, and update the deployment contract tests to cover the verify-deployed-release smoke check instead.
This commit is contained in:
1 parent
bbb7d66067
commit
2a1aef1c1b
6 files changed
+14
-13
No files matched your search
@@ -34,8 +34,5 @@ public/cache
|
|||||||
public/tmp
|
public/tmp
|
||||||
db_backup_*.sql
|
db_backup_*.sql
|
||||||
*.log
|
*.log
|
||||||
playwright-report
|
|
||||||
test-results
|
|
||||||
blob-report
|
|
||||||
.codex
|
.codex
|
||||||
.agents
|
.agents
|
||||||
@@ -93,8 +93,6 @@ for managed_name in epicnext-cms epicnext-cms-app; do
|
|||||||
done
|
done
|
||||||
cp "$deploy_dir/.env" .env
|
cp "$deploy_dir/.env" .env
|
||||||
pnpm install --frozen-lockfile
|
pnpm install --frozen-lockfile
|
||||||
# Prepare browser before cutover so installation failures cannot interrupt the site.
|
|
||||||
pnpm exec playwright install chromium
|
|
||||||
|
|
||||||
echo "Building $image"
|
echo "Building $image"
|
||||||
DOCKER_BUILDKIT=1 docker build --network=host --progress=plain --cache-from epicnext-cms:latest \
|
DOCKER_BUILDKIT=1 docker build --network=host --progress=plain --cache-from epicnext-cms:latest \
|
||||||
@@ -161,8 +159,7 @@ candidate_attempted=1
|
|||||||
)
|
)
|
||||||
healthy
|
healthy
|
||||||
node scripts/verify-deployed-release.mjs http://127.0.0.1:3002/api/health "$sha"
|
node scripts/verify-deployed-release.mjs http://127.0.0.1:3002/api/health "$sha"
|
||||||
PLAYWRIGHT_BASE_URL=http://127.0.0.1:3002 pnpm test:e2e
|
# Publish the latest alias only after health and release checks pass.
|
||||||
# Publish the latest alias only after health and browser checks pass.
|
|
||||||
docker tag "$image" epicnext-cms:latest
|
docker tag "$image" epicnext-cms:latest
|
||||||
cutover_started=0
|
cutover_started=0
|
||||||
if [ "$backup_created" -eq 1 ]; then docker rm "$backup_name" || true; fi
|
if [ "$backup_created" -eq 1 ]; then docker rm "$backup_name" || true; fi
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ describe("deployment transaction", () => {
|
|||||||
expect(result.calls.indexOf("pnpm db:migrate")).toBeLessThan(
|
expect(result.calls.indexOf("pnpm db:migrate")).toBeLessThan(
|
||||||
result.calls.indexOf("docker stop"),
|
result.calls.indexOf("docker stop"),
|
||||||
);
|
);
|
||||||
expect(result.calls.indexOf("pnpm test:e2e")).toBeLessThan(
|
expect(result.calls.indexOf("verify-deployed-release.mjs")).toBeLessThan(
|
||||||
result.calls.indexOf(
|
result.calls.indexOf(
|
||||||
`docker tag epicnext-cms:${sha} epicnext-cms:latest`,
|
`docker tag epicnext-cms:${sha} epicnext-cms:latest`,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -61,7 +61,8 @@ describe("CI workflow", () => {
|
|||||||
it("smoke-tests the deployed app within the deployment transaction", () => {
|
it("smoke-tests the deployed app within the deployment transaction", () => {
|
||||||
expect(workflow).toContain("bash scripts/ci-deploy.sh");
|
expect(workflow).toContain("bash scripts/ci-deploy.sh");
|
||||||
const deploy = readFileSync("scripts/ci-deploy.sh", "utf8");
|
const deploy = readFileSync("scripts/ci-deploy.sh", "utf8");
|
||||||
expect(deploy).toContain("pnpm test:e2e");
|
expect(deploy).toContain(
|
||||||
expect(deploy).toContain("PLAYWRIGHT_BASE_URL");
|
"node scripts/verify-deployed-release.mjs http://127.0.0.1:3002/api/health",
|
||||||
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -8,7 +8,7 @@ it("uses two test workers and runs smoke checks in the deployment transaction",
|
|||||||
expect(workflow).not.toContain("\n e2e:");
|
expect(workflow).not.toContain("\n e2e:");
|
||||||
expect(workflow).toContain("bash scripts/ci-deploy.sh");
|
expect(workflow).toContain("bash scripts/ci-deploy.sh");
|
||||||
expect(deploy).toContain(
|
expect(deploy).toContain(
|
||||||
"PLAYWRIGHT_BASE_URL=http://127.0.0.1:3002 pnpm test:e2e",
|
"node scripts/verify-deployed-release.mjs http://127.0.0.1:3002/api/health",
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
it("locks CI and scheduled deployments using the same production lock", () => {
|
it("locks CI and scheduled deployments using the same production lock", () => {
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ flock() { echo "lock" >> "$TEST_DIR/calls"; [ "$SCENARIO" != lock-failure ]; }
|
|||||||
pnpm() {
|
pnpm() {
|
||||||
echo "pnpm $*" >> "$TEST_DIR/calls"
|
echo "pnpm $*" >> "$TEST_DIR/calls"
|
||||||
if [ "$1" = db:migrate ] && [ "$SCENARIO" = migration-failure ]; then return 1; fi
|
if [ "$1" = db:migrate ] && [ "$SCENARIO" = migration-failure ]; then return 1; fi
|
||||||
if [ "$1" = test:e2e ] && [ "$SCENARIO" = smoke-failure ]; then return 1; fi
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
curl() {
|
curl() {
|
||||||
@@ -43,5 +42,12 @@ docker() {
|
|||||||
}
|
}
|
||||||
export -f git flock pnpm curl sleep docker
|
export -f git flock pnpm curl sleep docker
|
||||||
|
|
||||||
node() { echo "node $*" >> "$TEST_DIR/calls"; [ "$SCENARIO" != release-failure ]; }
|
node() {
|
||||||
|
echo "node $*" >> "$TEST_DIR/calls"
|
||||||
|
case "$SCENARIO" in
|
||||||
|
release-failure) return 1 ;;
|
||||||
|
smoke-failure) case "$*" in *verify-deployed-release.mjs*) return 1 ;; esac ;;
|
||||||
|
esac
|
||||||
|
return 0
|
||||||
|
}
|
||||||
export -f node
|
export -f node
|
||||||
Reference in new issue
Block a user