diff --git a/.github/workflows/build-master.yml b/.github/workflows/build-master.yml index 298dbb8f1..45f06f4a2 100644 --- a/.github/workflows/build-master.yml +++ b/.github/workflows/build-master.yml @@ -231,6 +231,10 @@ jobs: name: storybook path: ./packages/component/storybook-static + - name: Wait for Octobase Ready + run: | + node ./scripts/wait-3000-healthz.mjs + - name: Run playwright tests run: yarn test --forbid-only --shard=${{ matrix.shard }}/${{ strategy.job-total }} env: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5463486fd..e16e9ccf2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -150,6 +150,10 @@ jobs: name: storybook path: ./packages/component/storybook-static + - name: Wait for Octobase Ready + run: | + node ./scripts/wait-3000-healthz.mjs + - name: Run playwright tests run: yarn test --forbid-only --shard=${{ matrix.shard }}/${{ strategy.job-total }} env: diff --git a/scripts/wait-3000-healthz.mjs b/scripts/wait-3000-healthz.mjs new file mode 100644 index 000000000..a309ba8b9 --- /dev/null +++ b/scripts/wait-3000-healthz.mjs @@ -0,0 +1,37 @@ +import http from 'node:http'; + +const options = { + hostname: 'localhost', + port: 3000, + path: '/api/healthz', + method: 'GET', +}; + +const maxAttempts = 5; +const timeout = 1000; +let attempts = 0; + +while (attempts < maxAttempts) { + await new Promise(resolve => setTimeout(resolve, timeout * (1 << attempts))); + await new Promise(resolve => { + const req = http.request(options, res => { + if (res.statusCode === 204) { + console.log('Server is ready'); + process.exit(0); + } else { + console.log(`Unexpected response: ${res.statusCode}`); + } + resolve(); + }); + + req.on('error', error => { + console.error(error); + resolve(); + }); + + req.end(); + attempts++; + }); +} + +process.exit(1); diff --git a/tests/parallels/open-affine.spec.ts b/tests/parallels/open-affine.spec.ts index b905c718d..020dd48d0 100644 --- a/tests/parallels/open-affine.spec.ts +++ b/tests/parallels/open-affine.spec.ts @@ -20,7 +20,7 @@ test.describe('Open AFFiNE', () => { const workspaceCards = await page.$$('data-testid=workspace-card'); expect(workspaceCards.length).toBe(2); await workspaceCards[1].click(); - await page.goto('http://localhost:8080'); + await openHomePage(page); const workspaceNameDom = await page.getByTestId('workspace-name'); const currentWorkspaceName = await workspaceNameDom.evaluate(