Run playwright tests in our gha integration test workflow #1405
develop-api.yaml
on: pull_request
Set Version
0s
GHA integration tests
/
execute
25m 43s
Matrix: Deploy API / verify-published
Waiting for pending jobs
Annotations
13 errors, 20 warnings, and 1 notice
GHA integration tests / execute
Process completed with exit code 1.
|
[chromium] › emailWorkflow.test.ts:74:1 › forgot password:
frontend/tests/fixtures.ts#L57
1) [chromium] › emailWorkflow.test.ts:74:1 › forgot password ─────────────────────────────────────
Error: Unexpected response status: 500. (Request URL: http://localhost:6579/api/login/forgotPassword. Traceparent: 00-685293f987a5ca2024ec9cf4977b22d8-3d545bff15961adf-01.)
expect(received).toBeLessThan(expected)
Expected: < 500
Received: 500
at fixtures.ts:57
55 | const url = response.request().url();
56 | const unexpectedResponseMessage = `Unexpected response status: ${status}. (Request URL: ${url}. Traceparent: ${traceparent}.)`;
> 57 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(500);
| ^
58 | if (response.request().isNavigationRequest()) {
59 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(400);
60 | }
at BrowserContext.<anonymous> (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:57:63)
|
[chromium] › emailWorkflow.test.ts:74:1 › forgot password:
frontend/tests/pages/basePage.ts#L54
1) [chromium] › emailWorkflow.test.ts:74:1 › forgot password ─────────────────────────────────────
Error: Timed out 10000ms waiting for expect(locator).toHaveURL(expected)
Locator: locator(':root')
Expected pattern: /\/forgotPassword\/emailSent($|\?|#)/
Received string: "http://localhost:6579/forgotPassword"
Call log:
- expect.toHaveURL with timeout 10000ms
- waiting for locator(':root')
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
at pages/basePage.ts:54
52 | } else {
53 | // first use expect() so we get a good error message
> 54 | await expect(this.page).toHaveURL(this.urlPattern, {timeout: 10_000});
| ^
55 | // still wait to ensure we reach the state we expect
56 | await this.page.waitForURL(this.urlPattern, {waitUntil: 'load'});
57 | }
at ResetPasswordEmailSentPage.waitFor (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/basePage.ts:54:31)
at ForgotPasswordPage.submit (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/forgotPasswordPage.ts:21:60)
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/emailWorkflow.test.ts:80:3
|
[chromium] › emailWorkflow.test.ts:74:1 › forgot password:
frontend/tests/fixtures.ts#L57
1) [chromium] › emailWorkflow.test.ts:74:1 › forgot password ─────────────────────────────────────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: Unexpected response status: 500. (Request URL: http://localhost:6579/api/login/forgotPassword. Traceparent: 00-ca2aa61ddf4d0e32c5fab53efcc98b62-63ad55af12284523-01.)
expect(received).toBeLessThan(expected)
Expected: < 500
Received: 500
at fixtures.ts:57
55 | const url = response.request().url();
56 | const unexpectedResponseMessage = `Unexpected response status: ${status}. (Request URL: ${url}. Traceparent: ${traceparent}.)`;
> 57 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(500);
| ^
58 | if (response.request().isNavigationRequest()) {
59 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(400);
60 | }
at BrowserContext.<anonymous> (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:57:63)
|
[chromium] › emailWorkflow.test.ts:74:1 › forgot password:
frontend/tests/pages/basePage.ts#L54
1) [chromium] › emailWorkflow.test.ts:74:1 › forgot password ─────────────────────────────────────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: Timed out 10000ms waiting for expect(locator).toHaveURL(expected)
Locator: locator(':root')
Expected pattern: /\/forgotPassword\/emailSent($|\?|#)/
Received string: "http://localhost:6579/forgotPassword"
Call log:
- expect.toHaveURL with timeout 10000ms
- waiting for locator(':root')
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
at pages/basePage.ts:54
52 | } else {
53 | // first use expect() so we get a good error message
> 54 | await expect(this.page).toHaveURL(this.urlPattern, {timeout: 10_000});
| ^
55 | // still wait to ensure we reach the state we expect
56 | await this.page.waitForURL(this.urlPattern, {waitUntil: 'load'});
57 | }
at ResetPasswordEmailSentPage.waitFor (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/basePage.ts:54:31)
at ForgotPasswordPage.submit (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/forgotPasswordPage.ts:21:60)
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/emailWorkflow.test.ts:80:3
|
[chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email:
frontend/tests/fixtures.ts#L63
2) [chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email ─────────────
Error: expect(received).not.toBe(expected) // Object.is equality
Expected: not "Unexpected Execution Error"
at fixtures.ts:63
61 | if (url.endsWith('/api/graphql') && response.ok()) { // response.ok() filters out redirects, which don't have a response body
62 | const result = await response.json() as GqlResult;
> 63 | expect.soft(result.errors?.[0]?.message).not.toBe('Unexpected Execution Error');
| ^
64 | }
65 | });
66 | }
at BrowserContext.<anonymous> (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:63:52)
|
[chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email:
frontend/tests/emailWorkflow.test.ts#L127
2) [chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email ─────────────
TimeoutError: locator.waitFor: Timeout 5000ms exceeded.
Call log:
- waiting for locator(':text("has been sent an invitation email")') to be visible
125 | await addMemberModal.inviteCheckbox.check();
126 | await addMemberModal.submitButton.click();
> 127 | await page.locator(':text("has been sent an invitation email")').waitFor();
| ^
128 |
129 | // Check invite link returnTo is relative path, not absolute
130 | const emailPage = await mailbox.openEmail(page, EmailSubjects.ProjectInvitation);
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/emailWorkflow.test.ts:127:68
|
[chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email:
frontend/tests/fixtures.ts#L63
2) [chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email ─────────────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: expect(received).not.toBe(expected) // Object.is equality
Expected: not "Unexpected Execution Error"
at fixtures.ts:63
61 | if (url.endsWith('/api/graphql') && response.ok()) { // response.ok() filters out redirects, which don't have a response body
62 | const result = await response.json() as GqlResult;
> 63 | expect.soft(result.errors?.[0]?.message).not.toBe('Unexpected Execution Error');
| ^
64 | }
65 | });
66 | }
at BrowserContext.<anonymous> (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:63:52)
|
[chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email:
frontend/tests/emailWorkflow.test.ts#L127
2) [chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email ─────────────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
TimeoutError: locator.waitFor: Timeout 5000ms exceeded.
Call log:
- waiting for locator(':text("has been sent an invitation email")') to be visible
125 | await addMemberModal.inviteCheckbox.check();
126 | await addMemberModal.submitButton.click();
> 127 | await page.locator(':text("has been sent an invitation email")').waitFor();
| ^
128 |
129 | // Check invite link returnTo is relative path, not absolute
130 | const emailPage = await mailbox.openEmail(page, EmailSubjects.ProjectInvitation);
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/emailWorkflow.test.ts:127:68
|
[chromium] › errorHandling.test.ts:140:1 › page load 403 on home page is redirected to login:
frontend/tests/fixtures.ts#L57
3) [chromium] › errorHandling.test.ts:140:1 › page load 403 on home page is redirected to login ──
Error: Unexpected response status: 500. (Request URL: http://localhost:6579/api/login/forgotPassword. Traceparent: 00-c8748ee4925a7d6f90b295bc6f837f36-efc43ed0f1b76eaa-01.)
expect(received).toBeLessThan(expected)
Expected: < 500
Received: 500
at fixtures.ts:57
55 | const url = response.request().url();
56 | const unexpectedResponseMessage = `Unexpected response status: ${status}. (Request URL: ${url}. Traceparent: ${traceparent}.)`;
> 57 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(500);
| ^
58 | if (response.request().isNavigationRequest()) {
59 | expect.soft(response.status(), unexpectedResponseMessage).toBeLessThan(400);
60 | }
at BrowserContext.<anonymous> (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:57:63)
|
[chromium] › errorHandling.test.ts:140:1 › page load 403 on home page is redirected to login:
frontend/tests/pages/basePage.ts#L54
3) [chromium] › errorHandling.test.ts:140:1 › page load 403 on home page is redirected to login ──
Error: Timed out 10000ms waiting for expect(locator).toHaveURL(expected)
Locator: locator(':root')
Expected pattern: /\/forgotPassword\/emailSent($|\?|#)/
Received string: "http://localhost:6579/forgotPassword"
Call log:
- expect.toHaveURL with timeout 10000ms
- waiting for locator(':root')
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
- locator resolved to <html lang="en">…</html>
- unexpected value "http://localhost:6579/forgotPassword"
at pages/basePage.ts:54
52 | } else {
53 | // first use expect() so we get a good error message
> 54 | await expect(this.page).toHaveURL(this.urlPattern, {timeout: 10_000});
| ^
55 | // still wait to ensure we reach the state we expect
56 | await this.page.waitForURL(this.urlPattern, {waitUntil: 'load'});
57 | }
at ResetPasswordEmailSentPage.waitFor (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/basePage.ts:54:31)
at ForgotPasswordPage.submit (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/forgotPasswordPage.ts:21:60)
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/errorHandling.test.ts:149:3
|
GHA integration tests / execute
Process completed with exit code 1.
|
GHA integration tests / execute
Process completed with exit code 1.
|
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:
backend/LexBoxApi/GraphQL/CustomTypes/IsLanguageForgeProjectDataLoader.cs#L64
Method referencing lambda parameter is not supported LINQ expression. (https://www.mongodb.com/docs/mongodb-analyzer/current/rules/#MALinq2001)
|
Build API / publish-api:
backend/Testing/Fixtures/Tests/ServicesFixtureTests.cs#L8
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
Parameter 'logger' is unread.
|
Build API / publish-api
Parameter 'lexAuthService' is unread.
|
Build API / publish-api
Parameter 'lexAuthService' is unread.
|
Build API / publish-api
Parameter 'lexBoxDbContext' 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
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
Action method returns undeclared status code '404'
|
Build API / publish-api
Method referencing lambda parameter is not supported LINQ expression. (https://www.mongodb.com/docs/mongodb-analyzer/current/rules/#MALinq2001)
|
Build API / publish-api
Parameter 'logger' is unread.
|
🎭 Playwright Run Summary
12 failed
[chromium] › emailWorkflow.test.ts:74:1 › forgot password ──────────────────────────────────────
[chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email ──────────────
[chromium] › errorHandling.test.ts:140:1 › page load 403 on home page is redirected to login ───
[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] › emailWorkflow.test.ts:74:1 › forgot password ───────────────────────────────────────
[firefox] › emailWorkflow.test.ts:110:1 › register via new-user invitation email ───────────────
[firefox] › errorHandling.test.ts:140:1 › page load 403 on home page is redirected to login ────
[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 ────────────────────────────────────────────
58 passed (7.8m)
|
Artifacts
Produced during runtime
Name | Size | |
---|---|---|
dotnet-unit-test-results
|
3.51 KB |
|
k8s-logs
|
866 KB |
|
playwright-traces--hg-
|
162 MB |
|