From c998bc1a405bdbe229fe1e049ba6bcf38ea014ef Mon Sep 17 00:00:00 2001 From: olegberman Date: Tue, 28 Jul 2026 12:58:22 -0400 Subject: [PATCH] Support release staging across versions --- .github/workflows/release.yml | 3 +-- test/e2e/staging/lifecycle.spec.ts | 12 ++++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a25b3ce..f476d39 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -334,9 +334,8 @@ jobs: env: GH_TOKEN: ${{ github.token }} steps: - - name: Remove the failed draft and its temporary tag + - name: Remove the failed draft run: >- gh release delete "v${{ needs.candidate.outputs.version }}" --repo "${{ github.repository }}" - --cleanup-tag --yes diff --git a/test/e2e/staging/lifecycle.spec.ts b/test/e2e/staging/lifecycle.spec.ts index 696722f..583defd 100644 --- a/test/e2e/staging/lifecycle.spec.ts +++ b/test/e2e/staging/lifecycle.spec.ts @@ -78,19 +78,23 @@ test("HQBase web lifecycle remains healthy", async ({ page, request }) => { login.ok(), `Owner API sign-in failed (${login.status()}): ${await login.text()}` ).toBeTruthy(); - const newEmail = page.getByRole("button", { name: "New email" }); + const primaryEmailAction = page.getByRole("button", { + name: /^(?:Compose|New email)$/ + }); const loginEmail = page.getByLabel("Email"); try { await page.goto("/", { waitUntil: "domcontentloaded" }); await expect( - loginEmail.or(newEmail), + loginEmail.or(primaryEmailAction), "HQBase app shell renders its authenticated state" ).toBeVisible({ timeout: 60_000 }); } catch (error) { const shell = await page.evaluate(() => ({ path: window.location.pathname, rootChildren: document.querySelector("#root")?.childElementCount ?? -1, - scripts: [...document.scripts].map((script) => new URL(script.src).pathname), + scripts: [...document.scripts].map((script) => + script.src ? new URL(script.src).pathname : "(inline)" + ), title: document.title })); console.error("HQBase app shell diagnostics", { appShellErrors, shell }); @@ -101,7 +105,7 @@ test("HQBase web lifecycle remains healthy", async ({ page, request }) => { await page.getByLabel("Password").fill(password); await page.getByRole("button", { name: "Continue" }).click(); } - await expect(newEmail).toBeVisible({ timeout: 60_000 }); + await expect(primaryEmailAction).toBeVisible({ timeout: 60_000 }); const expectedUpdate = process.env.HQBASE_STAGING_EXPECT_UPDATE_VERSION; if (expectedUpdate) { await expect