Run playwright tests in our gha integration test workflow #1355
develop-api.yaml
on: pull_request
Set Version
0s
GHA integration tests
/
execute
25m 12s
Matrix: Deploy API / verify-published
Waiting for pending jobs
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 |
|