Run playwright tests in our gha integration test workflow #1419
develop-api.yaml
on: pull_request
Set Version
0s
GHA integration tests
/
dotnet-test
4m 38s
GHA integration tests
/
playwright-test
6m 43s
Matrix: Deploy API / verify-published
Waiting for pending jobs
GHA integration tests
/
upload-logs
1s
Annotations
22 errors, 20 warnings, and 1 notice
GHA integration tests / start-cluster
Process completed with exit code 1.
|
GHA integration tests / start-cluster
Process completed with exit code 1.
|
Testing.ApiTests.OrgPermissionTests.ManagersSeeAllProjects:
backend/Testing/ApiTests/OrgPermissionTests.cs#L247
System.Net.Http.HttpRequestException : Connection refused (localhost:6579)
---- System.Net.Sockets.SocketException : Connection refused
|
Testing.ApiTests.AuthTests.ClearingCookiesWorks:
backend/Testing/ApiTests/AuthTests.cs#L99
System.Net.Http.HttpRequestException : Connection refused (localhost:6579)
---- System.Net.Sockets.SocketException : Connection refused
|
Testing.SyncReverseProxy.ResumableTests.IsAvailableJwtInBasicAuth(user: "admin"):
backend/Testing/SyncReverseProxy/ResumableTests.cs#L42
System.Net.Http.HttpRequestException : Connection refused (localhost:6579)
---- System.Net.Sockets.SocketException : Connection refused
|
Testing.ApiTests.GqlMiddlewareTests.CanGetProjectThatWasJustAddedToUser
System.Net.Http.HttpRequestException : Connection refused (localhost:6579)
---- System.Net.Sockets.SocketException : Connection refused
|
Testing.ApiTests.GqlMiddlewareTests.CanTriggerMultipleInstancesOfMiddlewareThatAccessDbSimultaneously
System.Net.Http.HttpRequestException : Connection refused (localhost:6579)
---- System.Net.Sockets.SocketException : Connection refused
|
Testing.SyncReverseProxy.ResumableTests.IsAvailableJwtInBasicAuth(user: "manager"):
backend/Testing/SyncReverseProxy/ResumableTests.cs#L42
System.Net.Http.HttpRequestException : Connection refused (localhost:6579)
---- System.Net.Sockets.SocketException : Connection refused
|
Testing.ApiTests.OrgPermissionTests.MembersSeePublicAndTheirProjects:
backend/Testing/ApiTests/OrgPermissionTests.cs#L237
System.Net.Http.HttpRequestException : Connection refused (localhost:6579)
---- System.Net.Sockets.SocketException : Connection refused
|
Testing.ApiTests.AuthTests.JwtWithInvalidSignatureFailsAuth:
backend/Testing/ApiTests/AuthTests.cs#L121
System.Net.Http.HttpRequestException : Connection refused (localhost:6579)
---- System.Net.Sockets.SocketException : Connection refused
|
Testing.ApiTests.ResetPojectRaceCondition.SimultaneousResetsDontResultIn404s
System.Net.Http.HttpRequestException : Connection refused (localhost:6579)
---- System.Net.Sockets.SocketException : Connection refused
|
Testing.SyncReverseProxy.ResumableTests.WithBadNotValidProject:
backend/Testing/SyncReverseProxy/ResumableTests.cs#L93
System.Net.Http.HttpRequestException : Connection refused (resumable.localhost:6579)
---- System.Net.Sockets.SocketException : Connection refused
|
[chromium] › adminPage.test.ts:6:1 › can navigate to project page:
frontend/tests/pages/basePage.ts#L34
1) [chromium] › adminPage.test.ts:6:1 › can navigate to project page ─────────────────────────────
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:6579/login
Call log:
- navigating to "http://localhost:6579/login", waiting until "load"
at pages/basePage.ts:34
32 | }
33 |
> 34 | const response = await this.page.goto(this.url + (urlEnd ?? ''));
| ^
35 | // response is null if same URL, but different hash - and that's okay
36 | if (response) {
37 | if (expectErrorResponse) {
at LoginPage.goto (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/basePage.ts:34:38)
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/adminPage.test.ts:7:47
|
[chromium] › adminPage.test.ts:6:1 › can navigate to project page:
frontend/tests/pages/basePage.ts#L34
1) [chromium] › adminPage.test.ts:6:1 › can navigate to project page ─────────────────────────────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:6579/login
Call log:
- navigating to "http://localhost:6579/login", waiting until "load"
at pages/basePage.ts:34
32 | }
33 |
> 34 | const response = await this.page.goto(this.url + (urlEnd ?? ''));
| ^
35 | // response is null if same URL, but different hash - and that's okay
36 | if (response) {
37 | if (expectErrorResponse) {
at LoginPage.goto (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/basePage.ts:34:38)
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/adminPage.test.ts:7:47
|
[chromium] › button.test.ts:3:1 › Playwright doesn't click on loading buttons:
frontend/tests/button.test.ts#L4
2) [chromium] › button.test.ts:3:1 › Playwright doesn't click on loading buttons ─────────────────
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:6579/sandbox
Call log:
- navigating to "http://localhost:6579/sandbox", waiting until "load"
2 |
3 | test('Playwright doesn\'t click on loading buttons', async ({ page }) => {
> 4 | await page.goto('/sandbox');
| ^
5 | await page.click('text=Primary Button');
6 | await page.getByText('Loading Button', { exact: true }).waitFor();
7 | test.fail(true); // everything prior to this should succeed
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/button.test.ts:4:14
|
[chromium] › button.test.ts:3:1 › Playwright doesn't click on loading buttons:
frontend/tests/button.test.ts#L4
2) [chromium] › button.test.ts:3:1 › Playwright doesn't click on loading buttons ─────────────────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:6579/sandbox
Call log:
- navigating to "http://localhost:6579/sandbox", waiting until "load"
2 |
3 | test('Playwright doesn\'t click on loading buttons', async ({ page }) => {
> 4 | await page.goto('/sandbox');
| ^
5 | await page.click('text=Primary Button');
6 | await page.getByText('Loading Button', { exact: true }).waitFor();
7 | test.fail(true); // everything prior to this should succeed
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/button.test.ts:4:14
|
[chromium] › emailWorkflow.test.ts:27:1 › register:
frontend/tests/pages/basePage.ts#L34
3) [chromium] › emailWorkflow.test.ts:27:1 › register, verify, update, verify email address ──────
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:6579/register
Call log:
- navigating to "http://localhost:6579/register", waiting until "load"
at pages/basePage.ts:34
32 | }
33 |
> 34 | const response = await this.page.goto(this.url + (urlEnd ?? ''));
| ^
35 | // response is null if same URL, but different hash - and that's okay
36 | if (response) {
37 | if (expectErrorResponse) {
at RegisterPage.goto (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/basePage.ts:34:38)
at registerUser (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/utils/authHelpers.ts:32:53)
at Object.tempUser (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:101:30)
|
[chromium] › emailWorkflow.test.ts:27:1 › register:
frontend/tests/pages/basePage.ts#L34
3) [chromium] › emailWorkflow.test.ts:27:1 › register, verify, update, verify email address ──────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:6579/register
Call log:
- navigating to "http://localhost:6579/register", waiting until "load"
at pages/basePage.ts:34
32 | }
33 |
> 34 | const response = await this.page.goto(this.url + (urlEnd ?? ''));
| ^
35 | // response is null if same URL, but different hash - and that's okay
36 | if (response) {
37 | if (expectErrorResponse) {
at RegisterPage.goto (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/basePage.ts:34:38)
at registerUser (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/utils/authHelpers.ts:32:53)
at Object.tempUser (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:101:30)
|
[chromium] › emailWorkflow.test.ts:74:1 › forgot password:
frontend/tests/pages/basePage.ts#L34
4) [chromium] › emailWorkflow.test.ts:74:1 › forgot password ─────────────────────────────────────
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:6579/register
Call log:
- navigating to "http://localhost:6579/register", waiting until "load"
at pages/basePage.ts:34
32 | }
33 |
> 34 | const response = await this.page.goto(this.url + (urlEnd ?? ''));
| ^
35 | // response is null if same URL, but different hash - and that's okay
36 | if (response) {
37 | if (expectErrorResponse) {
at RegisterPage.goto (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/basePage.ts:34:38)
at registerUser (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/utils/authHelpers.ts:32:53)
at Object.tempUser (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:101:30)
|
[chromium] › emailWorkflow.test.ts:74:1 › forgot password:
frontend/tests/pages/basePage.ts#L34
4) [chromium] › emailWorkflow.test.ts:74:1 › forgot password ─────────────────────────────────────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:6579/register
Call log:
- navigating to "http://localhost:6579/register", waiting until "load"
at pages/basePage.ts:34
32 | }
33 |
> 34 | const response = await this.page.goto(this.url + (urlEnd ?? ''));
| ^
35 | // response is null if same URL, but different hash - and that's okay
36 | if (response) {
37 | if (expectErrorResponse) {
at RegisterPage.goto (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/pages/basePage.ts:34:38)
at registerUser (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/utils/authHelpers.ts:32:53)
at Object.tempUser (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/fixtures.ts:101:30)
|
[chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email:
frontend/apiRequestContext.post: connect ECONNREFUSED :#L1
5) [chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email ─────────────
Error: apiRequestContext.post: connect ECONNREFUSED ::1:6579
Call log:
- → POST http://localhost:6579/api/login
- user-agent: Playwright Chrome
- accept: */*
- accept-encoding: gzip,deflate,br
- content-type: application/json
- content-length: 71
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/apiRequestContext.post: connect ECONNREFUSED ::1:6579
at loginAs (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/utils/authHelpers.ts:15:30)
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/emailWorkflow.test.ts:113:9
|
[chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email:
frontend/apiRequestContext.post: connect ECONNREFUSED :#L1
5) [chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email ─────────────
Retry #1 ───────────────────────────────────────────────────────────────────────────────────────
Error: apiRequestContext.post: connect ECONNREFUSED ::1:6579
Call log:
- → POST http://localhost:6579/api/login
- user-agent: Playwright Chrome
- accept: */*
- accept-encoding: gzip,deflate,br
- content-type: application/json
- content-length: 71
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/apiRequestContext.post: connect ECONNREFUSED ::1:6579
at loginAs (/home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/utils/authHelpers.ts:15:30)
at /home/runner/work/languageforge-lexbox/languageforge-lexbox/frontend/tests/emailWorkflow.test.ts:113:9
|
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#L448
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
'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 'loggedInContext' is unread.
|
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
64 failed
[chromium] › adminPage.test.ts:6:1 › can navigate to project page ──────────────────────────────
[chromium] › button.test.ts:3:1 › Playwright doesn't click on loading buttons ──────────────────
[chromium] › emailWorkflow.test.ts:27:1 › register, verify, update, verify email address ───────
[chromium] › emailWorkflow.test.ts:74:1 › forgot password ──────────────────────────────────────
[chromium] › emailWorkflow.test.ts:110:1 › register via new-user invitation email ──────────────
[chromium] › errorHandling.test.ts:13:1 › can catch 500 errors from goto in same tab ───────────
[chromium] › errorHandling.test.ts:23:1 › can catch 500 errors from goto in new tab ────────────
[chromium] › errorHandling.test.ts:32:1 › can catch 500 errors in page load ────────────────────
[chromium] › errorHandling.test.ts:39:1 › page load 500 lands on new page ──────────────────────
[chromium] › errorHandling.test.ts:49:1 › catch fetch 500 and error dialog ─────────────────────
[chromium] › errorHandling.test.ts:60:1 › client-side gql 500 does not break the application ───
[chromium] › errorHandling.test.ts:74:1 › server-side gql 500 does not kill the server ─────────
[chromium] › errorHandling.test.ts:83:1 › server page load 401 is redirected to login ──────────
[chromium] › errorHandling.test.ts:90:1 › client page load 401 is redirected to login ──────────
[chromium] › errorHandling.test.ts:105:1 › can catch 403 errors from goto in same tab ──────────
[chromium] › errorHandling.test.ts:115:1 › can catch 403 errors from goto in new tab ───────────
[chromium] › errorHandling.test.ts:124:1 › page load 403 is redirected to home ─────────────────
[chromium] › errorHandling.test.ts:131:1 › page load 403 in new tab is redirected to home ──────
[chromium] › errorHandling.test.ts:140:1 › page load 403 on home page is redirected to login ───
[chromium] › errorHandling.test.ts:174:1 › node survives corrupt jwt ───────────────────────────
[chromium] › i18n.test.ts:6:1 › server-side locale does not leak ───────────────────────────────
[chromium] › i18n.test.ts:30:1 › late subscription to locale works ─────────────────────────────
[chromium] › loginPage.test.ts:7:1 › can log in ────────────────────────────────────────────────
[chromium] › loginPage.test.ts:14:1 › show error without username ──────────────────────────────
[chromium] › loginPage.test.ts:23:1 › can log in after error ───────────────────────────────────
[chromium] › loginPage.test.ts:40:1 › after login user is sent to original page ────────────────
[chromium] › managerPage.test.ts:6:1 › display dashboard, then project page ────────────────────
[chromium] › recreateProject.test.ts:10:1 › delete and recreate project ────────────────────────
[chromium] › resetProject.test.ts:20:1 › reset project and upload .zip file ────────────────────
[chromium] › userPage.test.ts:10:1 › can update account info ───────────────────────────────────
[chromium] › userPage.test.ts:21:1 › display form errors on invalid data ───────────────────────
[chromium] › userPage.test.ts:30:1 › can reset password ────────────────────────────────────────
[firefox] › adminPage.test.ts:6:1 › can navigate to project page ───────────────────────────────
[firefox] › button.test.ts:3:1 › Playwright doesn't click on loading buttons ───────────────────
[firefox] › emailWorkflow.test.ts:27:1 › register, verify, update, verify email address ────────
[firefox] › emailWorkflow.test.ts:74:1 › forgot password ───────────────────────────────────────
[firefox] › emailWorkflow.test.ts:110:1 › register via new-user invitation email ───────────────
[firefox] › errorHandling.test.ts:13:1 › can catch 500 errors from goto in same tab ────────────
[firefox] › errorHandling.test.ts:23:1 › can catch 500 errors from goto in new tab ─────────────
[firefox] › errorHandling.test.ts:32:1 › can catch 500 errors in page load ─────────────────────
[firefox] › errorHandling.test.ts:39:1 ›
|
Artifacts
Produced during runtime
Name | Size | |
---|---|---|
dotnet-unit-test-results
|
3.53 KB |
|
playwright-traces
|
6.6 MB |
|