diff --git a/.changeset/tidy-template-readiness.md b/.changeset/tidy-template-readiness.md new file mode 100644 index 000000000..87cd9f1d7 --- /dev/null +++ b/.changeset/tidy-template-readiness.md @@ -0,0 +1,5 @@ +--- +'@aws-blocks/create-blocks-app': patch +--- + +Make starter template E2E setup wait for the Blocks server without depending on a sample API. diff --git a/packages/create-blocks-app/templates/auth-cognito/test/e2e.test.ts b/packages/create-blocks-app/templates/auth-cognito/test/e2e.test.ts index 400154f4f..42756df15 100644 --- a/packages/create-blocks-app/templates/auth-cognito/test/e2e.test.ts +++ b/packages/create-blocks-app/templates/auth-cognito/test/e2e.test.ts @@ -27,11 +27,15 @@ test.before(async () => { api = mod.api; hello = mod.hello; - // Wait for server to be ready + // Wait for the Blocks server to be ready without depending on the sample API. for (let i = 0; i < 60; i++) { - try { await hello.greet('ping'); return; } catch { - await setTimeout(1000); + try { + const response = await fetch('http://localhost:3000/.blocks-sandbox/config.json'); + if (response.ok) return; + } catch { + // The server is not listening yet. } + await setTimeout(1000); } throw new Error('Server not ready'); }); diff --git a/packages/create-blocks-app/templates/backend/test/e2e.test.ts b/packages/create-blocks-app/templates/backend/test/e2e.test.ts index 18d09e059..ea1f15cc5 100644 --- a/packages/create-blocks-app/templates/backend/test/e2e.test.ts +++ b/packages/create-blocks-app/templates/backend/test/e2e.test.ts @@ -9,9 +9,10 @@ installCookieJar(); let server: ChildProcess | null = null; let api: typeof apiType; +const serverPort = 3001; test.before(async () => { - if (!await isServerRunning()) { + if (!await isServerRunning(serverPort)) { server = spawn('npm', ['run', 'dev'], { cwd: process.cwd(), stdio: ['ignore', 'pipe', 'pipe'], @@ -25,11 +26,15 @@ test.before(async () => { const mod = await import('aws-blocks'); api = mod.api; - // Wait for server to be ready + // Wait for the Blocks server to be ready without depending on the sample API. for (let i = 0; i < 30; i++) { - try { await api.greet('ping'); return; } catch { - await setTimeout(1000); + try { + const response = await fetch(`http://localhost:${serverPort}/.blocks-sandbox/config.json`); + if (response.ok) return; + } catch { + // The server is not listening yet. } + await setTimeout(1000); } throw new Error('Server not ready'); }); diff --git a/packages/create-blocks-app/templates/bare/test/e2e.test.ts b/packages/create-blocks-app/templates/bare/test/e2e.test.ts index 28a9ffe74..b035598a9 100644 --- a/packages/create-blocks-app/templates/bare/test/e2e.test.ts +++ b/packages/create-blocks-app/templates/bare/test/e2e.test.ts @@ -25,11 +25,15 @@ test.before(async () => { const mod = await import('aws-blocks'); api = mod.api; - // Wait for server to be ready + // Wait for the Blocks server to be ready without depending on the sample API. for (let i = 0; i < 30; i++) { - try { await api.greet('ping'); return; } catch { - await setTimeout(1000); + try { + const response = await fetch('http://localhost:3000/.blocks-sandbox/config.json'); + if (response.ok) return; + } catch { + // The server is not listening yet. } + await setTimeout(1000); } throw new Error('Server not ready'); }); diff --git a/packages/create-blocks-app/templates/demo/test/e2e.test.ts b/packages/create-blocks-app/templates/demo/test/e2e.test.ts index 400154f4f..42756df15 100644 --- a/packages/create-blocks-app/templates/demo/test/e2e.test.ts +++ b/packages/create-blocks-app/templates/demo/test/e2e.test.ts @@ -27,11 +27,15 @@ test.before(async () => { api = mod.api; hello = mod.hello; - // Wait for server to be ready + // Wait for the Blocks server to be ready without depending on the sample API. for (let i = 0; i < 60; i++) { - try { await hello.greet('ping'); return; } catch { - await setTimeout(1000); + try { + const response = await fetch('http://localhost:3000/.blocks-sandbox/config.json'); + if (response.ok) return; + } catch { + // The server is not listening yet. } + await setTimeout(1000); } throw new Error('Server not ready'); });