Skip to content

Run playwright tests in our gha integration test workflow #1355

Run playwright tests in our gha integration test workflow

Run playwright tests in our gha integration test workflow #1355

Triggered via pull request November 6, 2024 08:23
Status Failure
Total duration 29m 10s
Artifacts 3

develop-api.yaml

on: pull_request
Set Version
0s
Set Version
Build API  /  publish-api
3m 30s
Build API / publish-api
Deploy API  /  deploy
Deploy API / deploy
GHA integration tests  /  execute
25m 12s
GHA integration tests / execute
Matrix: Deploy API / verify-published
Waiting for pending jobs
Fit to window
Zoom out
Zoom in

Annotations

12 errors, 22 warnings, and 1 notice
GHA integration tests / execute
Process completed with exit code 1.
[chromium] › errorHandling.test.ts:61:1 › client-side gql 500 does not break the application: frontend/tests/errorHandling.test.ts#L68
1) [chromium] › errorHandling.test.ts:61:1 › client-side gql 500 does not break the application ── Error: Timed out 5000ms waiting for expect(locator).toBeVisible() Locator: locator(':text-matches("Unexpected response:.*(500)", "g")').first() Expected: visible Received: <element(s) not found> Call log: - expect.toBeVisible with timeout 5000ms - waiting for locator(':text-matches("Unexpected response:.*(500)", "g")').first() 66 | await page.getByText('GQL 500').click(); 67 | await responsePromise.catch(() => { });// Ignore the error > 68 | await expect(page.locator(':text-matches("Unexpected response:.*(500)", "g")').first()).toBeVisible(); | ^ 69 | await page.getByRole('button', { name: 'Dismiss' }).click(); 70 | await page.locator('#home').click(); 71 | await new UserDashboardPage(page).waitFor(); at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/errorHandling.test.ts:68:91
[chromium] › errorHandling.test.ts:61:1 › client-side gql 500 does not break the application: frontend/tests/errorHandling.test.ts#L68
1) [chromium] › errorHandling.test.ts:61:1 › client-side gql 500 does not break the application ── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: Timed out 5000ms waiting for expect(locator).toBeVisible() Locator: locator(':text-matches("Unexpected response:.*(500)", "g")').first() Expected: visible Received: <element(s) not found> Call log: - expect.toBeVisible with timeout 5000ms - waiting for locator(':text-matches("Unexpected response:.*(500)", "g")').first() 66 | await page.getByText('GQL 500').click(); 67 | await responsePromise.catch(() => { });// Ignore the error > 68 | await expect(page.locator(':text-matches("Unexpected response:.*(500)", "g")').first()).toBeVisible(); | ^ 69 | await page.getByRole('button', { name: 'Dismiss' }).click(); 70 | await page.locator('#home').click(); 71 | await new UserDashboardPage(page).waitFor(); at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/errorHandling.test.ts:68:91
[chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server: frontend/tests/fixtures.ts#L40
2) [chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server ──────── Error: Unexpected response status: 500. (Request URL: http://localhost:6579/sandbox?ssr-gql-500. Traceparent: undefined.) expect(received).toBeLessThan(expected) Expected: < 500 Received: 500 at fixtures.ts:40 38 | const url = response.request().url(); 39 | const unexpectedResponseMessage = `Unexpected response status: ${status}. (Request URL: ${url}. Traceparent: ${traceparent}.)`; > 40 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(500); | ^ 41 | if (response.request().isNavigationRequest()) { 42 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(400); 43 | } at BrowserContext.<anonymous> (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:40:63)
[chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server: frontend/tests/fixtures.ts#L42
2) [chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server ──────── Error: Unexpected response status: 500. (Request URL: http://localhost:6579/sandbox?ssr-gql-500. Traceparent: undefined.) expect(received).toBeLessThan(expected) Expected: < 400 Received: 500 at fixtures.ts:42 40 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(500); 41 | if (response.request().isNavigationRequest()) { > 42 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(400); | ^ 43 | } 44 | }); 45 | } at BrowserContext.<anonymous> (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:42:65)
[chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server: frontend/tests/errorHandling.test.ts#L78
2) [chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server ──────── Error: Timed out 5000ms waiting for expect(locator).toBeVisible() Locator: locator(':text-matches("Unexpected response:.*(500)", "g")').first() Expected: visible Received: <element(s) not found> Call log: - expect.toBeVisible with timeout 5000ms - waiting for locator(':text-matches("Unexpected response:.*(500)", "g")').first() 76 | await loginAs(page.request, 'admin', testEnv.defaultPassword); 77 | await new SandboxPage(page).goto({ urlEnd: '?ssr-gql-500', expectErrorResponse: true }); > 78 | await expect(page.locator(':text-matches("Unexpected response:.*(500)", "g")').first()).toBeVisible(); | ^ 79 | // we've verified that a 500 occured, now we verify that the server is still alive 80 | await new AdminDashboardPage(page).goto(); 81 | test.fail(); // Everything up to here passed, but we expect a soft 500 response assertion to ultimately fail the test at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/errorHandling.test.ts:78:91
[chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server: frontend/tests/fixtures.ts#L40
2) [chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server ──────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: Unexpected response status: 500. (Request URL: http://localhost:6579/sandbox?ssr-gql-500. Traceparent: undefined.) expect(received).toBeLessThan(expected) Expected: < 500 Received: 500 at fixtures.ts:40 38 | const url = response.request().url(); 39 | const unexpectedResponseMessage = `Unexpected response status: ${status}. (Request URL: ${url}. Traceparent: ${traceparent}.)`; > 40 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(500); | ^ 41 | if (response.request().isNavigationRequest()) { 42 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(400); 43 | } at BrowserContext.<anonymous> (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:40:63)
[chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server: frontend/tests/fixtures.ts#L42
2) [chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server ──────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: Unexpected response status: 500. (Request URL: http://localhost:6579/sandbox?ssr-gql-500. Traceparent: undefined.) expect(received).toBeLessThan(expected) Expected: < 400 Received: 500 at fixtures.ts:42 40 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(500); 41 | if (response.request().isNavigationRequest()) { > 42 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(400); | ^ 43 | } 44 | }); 45 | } at BrowserContext.<anonymous> (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:42:65)
[chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server: frontend/tests/errorHandling.test.ts#L78
2) [chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server ──────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: Timed out 5000ms waiting for expect(locator).toBeVisible() Locator: locator(':text-matches("Unexpected response:.*(500)", "g")').first() Expected: visible Received: <element(s) not found> Call log: - expect.toBeVisible with timeout 5000ms - waiting for locator(':text-matches("Unexpected response:.*(500)", "g")').first() 76 | await loginAs(page.request, 'admin', testEnv.defaultPassword); 77 | await new SandboxPage(page).goto({ urlEnd: '?ssr-gql-500', expectErrorResponse: true }); > 78 | await expect(page.locator(':text-matches("Unexpected response:.*(500)", "g")').first()).toBeVisible(); | ^ 79 | // we've verified that a 500 occured, now we verify that the server is still alive 80 | await new AdminDashboardPage(page).goto(); 81 | test.fail(); // Everything up to here passed, but we expect a soft 500 response assertion to ultimately fail the test at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/errorHandling.test.ts:78:91
[chromium] › viewerPage.test.ts:9:1 › navigate to viewer: frontend/tests/pages/projectPage.ts#L48
3) [chromium] › viewerPage.test.ts:9:1 › navigate to viewer ────────────────────────────────────── TimeoutError: browserContext.waitForEvent: Timeout 5000ms exceeded while waiting for event "page" at pages/projectPage.ts:48 46 | 47 | async clickBrowseInViewer(): Promise<ViewerPage> { > 48 | const viewerTabPromise = this.page.context().waitForEvent('page') | ^ 49 | await this.browseButton.click(); 50 | const viewerTab = await viewerTabPromise; 51 | return new ViewerPage(viewerTab, this.name, this.code).waitFor(); at ProjectPage.clickBrowseInViewer (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/projectPage.ts:48:50) at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/viewerPage.test.ts:16:40
[chromium] › viewerPage.test.ts:9:1 › navigate to viewer: frontend/tests/pages/projectPage.ts#L49
3) [chromium] › viewerPage.test.ts:9:1 › navigate to viewer ────────────────────────────────────── TimeoutError: locator.click: Timeout 5000ms exceeded. Call log: - waiting for getByRole('link', { name: 'Browse' }) at pages/projectPage.ts:49 47 | async clickBrowseInViewer(): Promise<ViewerPage> { 48 | const viewerTabPromise = this.page.context().waitForEvent('page') > 49 | await this.browseButton.click(); | ^ 50 | const viewerTab = await viewerTabPromise; 51 | return new ViewerPage(viewerTab, this.name, this.code).waitFor(); 52 | } at ProjectPage.clickBrowseInViewer (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/projectPage.ts:49:29) at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/viewerPage.test.ts:16:40
GHA integration tests / execute
Process completed with exit code 1.
Build API / publish-api: backend/FwLite/MiniLcm/InMemoryApi.cs#L209
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
Build API / publish-api: backend/FwLite/MiniLcm/InMemoryApi.cs#L214
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
Build API / publish-api: backend/FwLite/MiniLcm/InMemoryApi.cs#L246
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
Build API / publish-api: backend/FwLite/MiniLcm/InMemoryApi.cs#L265
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
Build API / publish-api: backend/LexData/SeedingData.cs#L18
Parameter 'logger' is unread.
Build API / publish-api: backend/LexBoxApi/Services/UserService.cs#L10
Parameter 'lexAuthService' is unread.
Build API / publish-api: backend/LexBoxApi/Hub/CrdtProjectChangeHub.cs#L8
Parameter 'loggedInContext' is unread.
Build API / publish-api: backend/LexBoxApi/Auth/JwtTicketDataFormat.cs#L122
'JwtBearerOptions.SecurityTokenValidators' is obsolete: 'SecurityTokenValidators is no longer used by default. Use TokenHandlers instead. To continue using SecurityTokenValidators, set UseSecurityTokenValidators to true. See https://aka.ms/aspnetcore8/security-token-changes'
Build API / publish-api: backend/LexBoxApi/Services/HgService.cs#L441
The switch expression does not handle some values of its input type (it is not exhaustive) involving an unnamed enum value. For example, the pattern '(LexBoxApi.Services.RepoEmptyState)2' is not covered.
Build API / publish-api: backend/LexBoxApi/Controllers/IntegrationController.cs#L62
Action method returns undeclared status code '404'
Build API / publish-api
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
Build API / publish-api
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
Build API / publish-api
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
Build API / publish-api
This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
Build API / publish-api
Parameter 'logger' is unread.
Build API / publish-api
Parameter 'lexAuthService' is unread.
Build API / publish-api
Parameter 'loggedInContext' is unread.
Build API / publish-api
'JwtBearerOptions.SecurityTokenValidators' is obsolete: 'SecurityTokenValidators is no longer used by default. Use TokenHandlers instead. To continue using SecurityTokenValidators, set UseSecurityTokenValidators to true. See https://aka.ms/aspnetcore8/security-token-changes'
Build API / publish-api
Parameter 'lexAuthService' is unread.
Build API / publish-api
Parameter 'lexBoxDbContext' is unread.
Slow Test: frontend/[firefox] › emailWorkflow.test.ts#L1
frontend/[firefox] › emailWorkflow.test.ts took 22.0s
Slow Test: frontend/[chromium] › emailWorkflow.test.ts#L1
frontend/[chromium] › emailWorkflow.test.ts took 20.4s
🎭 Playwright Run Summary
10 failed [chromium] › errorHandling.test.ts:61:1 › client-side gql 500 does not break the application ─── [chromium] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server ───────── [chromium] › viewerPage.test.ts:9:1 › navigate to viewer ─────────────────────────────────────── [chromium] › viewerPage.test.ts:20:1 › find entry ────────────────────────────────────────────── [chromium] › viewerPage.test.ts:50:1 › entry details ─────────────────────────────────────────── [firefox] › errorHandling.test.ts:61:1 › client-side gql 500 does not break the application ──── [firefox] › errorHandling.test.ts:75:1 › server-side gql 500 does not kill the server ────────── [firefox] › viewerPage.test.ts:9:1 › navigate to viewer ──────────────────────────────────────── [firefox] › viewerPage.test.ts:20:1 › find entry ─────────────────────────────────────────────── [firefox] › viewerPage.test.ts:50:1 › entry details ──────────────────────────────────────────── 60 passed (6.5m)

Artifacts

Produced during runtime
Name Size
dotnet-unit-test-results
3.12 KB
k8s-logs
811 KB
playwright-traces--hg-
148 MB