Skip to content

Run playwright tests in our gha integration test workflow #1405

Run playwright tests in our gha integration test workflow

Run playwright tests in our gha integration test workflow #1405

Triggered via pull request November 13, 2024 14:56
Status Failure
Total duration 29m 31s
Artifacts 3

develop-api.yaml

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

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