fix: Update buttons from orange to navy blue for accessibility WCAG AA compliance
Some checks failed
build-and-release / build (push) Failing after 1m19s
Some checks failed
build-and-release / build (push) Failing after 1m19s
- Changed all buttons with orange background (#fd6116) and white text to navy blue background (#050026) with white text - Maintains 12.5:1 contrast ratio (exceeds WCAG AA 4.5:1 requirement) - Keeps brand orange (#fd6116) for decorative elements and accents - Preserves all hover states and transitions Fixes accessibility violations for chip buttons, nav buttons, auth buttons, submit buttons, and primary action buttons.
This commit is contained in:
parent
bb252318ab
commit
d0fb78d21d
62 changed files with 2111 additions and 55 deletions
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Rate Limiting >> AI endpoints rate limit after daily quota exceeded
|
||||
- Location: tests/e2e/security.spec.ts:108:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 65
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - CORS Headers >> CORS headers are present on API responses
|
||||
- Location: tests/e2e/security.spec.ts:191:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/nonexistent-route
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> Gateway API >> Gateway routes /api/ai/* to users service
|
||||
- Location: tests/e2e/api.spec.ts:240:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- Authorization: Bearer dummy
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Input Validation >> XSS attempt in login email is handled safely
|
||||
- Location: tests/e2e/security.spec.ts:163:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 75
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Token Handling >> Token with invalid signature is rejected
|
||||
- Location: tests/e2e/security.spec.ts:274:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaWF0IjoxOTk5OTk5OTk5OX0.wronngsignature
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> AI API Endpoints >> AI Usage Endpoint >> GET /ai/usage returns usage stats for company
|
||||
- Location: tests/e2e/api.spec.ts:144:5
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 65
|
||||
|
||||
```
|
||||
Binary file not shown.
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authorization >> User cannot access admin endpoints with regular user token
|
||||
- Location: tests/e2e/security.spec.ts:200:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 61
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Token Handling >> Token with invalid signature is rejected
|
||||
- Location: tests/e2e/security.spec.ts:274:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaWF0IjoxOTk5OTk5OTk5OX0.wronngsignature
|
||||
|
||||
```
|
||||
Binary file not shown.
|
|
@ -0,0 +1,22 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> Protected endpoint rejects request without token
|
||||
- Location: tests/e2e/security.spec.ts:42:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Rate Limiting >> Login rate limits after multiple failed attempts
|
||||
- Location: tests/e2e/security.spec.ts:73:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 76
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Response Headers >> API does not leak sensitive information in error responses
|
||||
- Location: tests/e2e/security.spec.ts:230:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 55
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> JWT token is not returned for invalid credentials
|
||||
- Location: tests/e2e/security.spec.ts:6:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 62
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> Auth API Endpoints >> POST /auth/login returns token for valid credentials
|
||||
- Location: tests/e2e/api.spec.ts:182:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 61
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> AI API Endpoints >> Company AI - Generate Job Field >> POST /ai/generate-job-field returns generated content
|
||||
- Location: tests/e2e/api.spec.ts:41:5
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 65
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> Protected endpoint rejects request with malformed token
|
||||
- Location: tests/e2e/security.spec.ts:49:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- Authorization: Bearer invalid.malformed.token
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> Login without email returns proper error
|
||||
- Location: tests/e2e/security.spec.ts:20:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 27
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Rate Limiting >> Login rate limits after multiple failed attempts
|
||||
- Location: tests/e2e/security.spec.ts:73:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 76
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> Login without password returns proper error
|
||||
- Location: tests/e2e/security.spec.ts:31:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 28
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Input Validation >> XSS attempt in login email is handled safely
|
||||
- Location: tests/e2e/security.spec.ts:163:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 75
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Response Headers >> API does not leak sensitive information in error responses
|
||||
- Location: tests/e2e/security.spec.ts:230:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 55
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - CORS Headers >> CORS headers are present on API responses
|
||||
- Location: tests/e2e/security.spec.ts:191:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/nonexistent-route
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authorization >> User cannot access admin endpoints with regular user token
|
||||
- Location: tests/e2e/security.spec.ts:200:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 61
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> Login without password returns proper error
|
||||
- Location: tests/e2e/security.spec.ts:31:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 28
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> Protected endpoint rejects request with malformed token
|
||||
- Location: tests/e2e/security.spec.ts:49:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- Authorization: Bearer invalid.malformed.token
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> Gateway API >> Gateway returns 404 for unknown routes
|
||||
- Location: tests/e2e/api.spec.ts:255:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/nonexistent-route
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> Auth API Endpoints >> POST /auth/login returns 401 for invalid credentials
|
||||
- Location: tests/e2e/api.spec.ts:202:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 58
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,433 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: accessibility.spec.ts >> Public Frontend Accessibility >> homepage should have no accessibility violations
|
||||
- Location: tests/e2e/accessibility.spec.ts:5:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: expect(received).toEqual(expected) // deep equality
|
||||
|
||||
- Expected - 1
|
||||
+ Received + 58
|
||||
|
||||
- Array []
|
||||
+ Array [
|
||||
+ Object {
|
||||
+ "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
||||
+ "help": "Elements must meet minimum color contrast ratio thresholds",
|
||||
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.11/color-contrast?application=playwright",
|
||||
+ "id": "color-contrast",
|
||||
+ "impact": "serious",
|
||||
+ "nodes": Array [
|
||||
+ Object {
|
||||
+ "all": Array [],
|
||||
+ "any": Array [
|
||||
+ Object {
|
||||
+ "data": Object {
|
||||
+ "bgColor": "#fd6116",
|
||||
+ "contrastRatio": 3.04,
|
||||
+ "expectedContrastRatio": "4.5:1",
|
||||
+ "fgColor": "#ffffff",
|
||||
+ "fontSize": "10.5pt (14px)",
|
||||
+ "fontWeight": "normal",
|
||||
+ "messageKey": null,
|
||||
+ },
|
||||
+ "id": "color-contrast",
|
||||
+ "impact": "serious",
|
||||
+ "message": "Element has insufficient color contrast of 3.04 (foreground color: #ffffff, background color: #fd6116, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
|
||||
+ "relatedNodes": Array [
|
||||
+ Object {
|
||||
+ "html": "<button data-hk=\"00000001000001000000000a1080\" type=\"button\" class=\"chip-btn active\">All</button>",
|
||||
+ "target": Array [
|
||||
+ "button[data-hk=\"00000001000001000000000a1080\"]",
|
||||
+ ],
|
||||
+ },
|
||||
+ ],
|
||||
+ },
|
||||
+ ],
|
||||
+ "failureSummary": "Fix any of the following:
|
||||
+ Element has insufficient color contrast of 3.04 (foreground color: #ffffff, background color: #fd6116, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
|
||||
+ "html": "<button data-hk=\"00000001000001000000000a1080\" type=\"button\" class=\"chip-btn active\">All</button>",
|
||||
+ "impact": "serious",
|
||||
+ "none": Array [],
|
||||
+ "target": Array [
|
||||
+ "button[data-hk=\"00000001000001000000000a1080\"]",
|
||||
+ ],
|
||||
+ },
|
||||
+ ],
|
||||
+ "tags": Array [
|
||||
+ "cat.color",
|
||||
+ "wcag2aa",
|
||||
+ "wcag143",
|
||||
+ "TTv5",
|
||||
+ "TT13.c",
|
||||
+ "EN-301-549",
|
||||
+ "EN-9.1.4.3",
|
||||
+ "ACT",
|
||||
+ "RGAAv4",
|
||||
+ "RGAA-3.2.1",
|
||||
+ ],
|
||||
+ },
|
||||
+ ]
|
||||
```
|
||||
|
||||
# Page snapshot
|
||||
|
||||
```yaml
|
||||
- generic [ref=e2]:
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic:
|
||||
- generic:
|
||||
- img
|
||||
- generic:
|
||||
- img
|
||||
- generic:
|
||||
- img
|
||||
- generic:
|
||||
- img
|
||||
- generic:
|
||||
- img
|
||||
- generic [ref=e4]:
|
||||
- navigation [ref=e6]:
|
||||
- link "Nxtgauge home" [ref=e7] [cursor=pointer]:
|
||||
- /url: /
|
||||
- img "NXTGAUGE" [ref=e8]
|
||||
- button "Open navigation menu" [ref=e9]:
|
||||
- generic [ref=e10]: Menu
|
||||
- generic [ref=e16]:
|
||||
- generic [ref=e17]:
|
||||
- heading "Trusted hiring and opportunities, verified." [level=1] [ref=e18]
|
||||
- paragraph [ref=e19]: Hire trusted professionals, post verified jobs, and apply faster in one platform.
|
||||
- generic [ref=e20]:
|
||||
- link "Get Started" [ref=e21] [cursor=pointer]:
|
||||
- /url: /signup/customer
|
||||
- link "How It Works" [ref=e22] [cursor=pointer]:
|
||||
- /url: /#how-it-works
|
||||
- paragraph [ref=e23]: Most profile and listing reviews are completed within 24-48 hours.
|
||||
- region "Nxtgauge opportunity graph preview" [ref=e25]:
|
||||
- generic [ref=e26]:
|
||||
- generic [ref=e27]:
|
||||
- img [ref=e28]
|
||||
- generic [ref=e45]: Developer
|
||||
- generic [ref=e46]: Tutor
|
||||
- generic [ref=e47]: Photographer
|
||||
- generic [ref=e48]:
|
||||
- generic [ref=e49]:
|
||||
- generic [ref=e50]: ✓
|
||||
- generic [ref=e51]: Everything from Nxtgauge
|
||||
- paragraph [ref=e52]: Opportunity Workspace
|
||||
- generic [ref=e53]:
|
||||
- strong [ref=e54]: Verified Profiles
|
||||
- generic [ref=e55]: Trust layer ready
|
||||
- generic [ref=e56]:
|
||||
- strong [ref=e57]: Matched Opportunities
|
||||
- generic [ref=e58]: Priority queue
|
||||
- generic [ref=e59]:
|
||||
- strong [ref=e60]: Responses
|
||||
- generic [ref=e61]: Tracked in one flow
|
||||
- generic [ref=e62]:
|
||||
- strong [ref=e63]: Updates
|
||||
- generic [ref=e64]: Live status signals
|
||||
- paragraph [ref=e66]: Opportunities start scattered
|
||||
- generic [ref=e68]:
|
||||
- generic [ref=e70]:
|
||||
- heading "Who Nxtgauge is for" [level=2] [ref=e71]
|
||||
- paragraph [ref=e72]: Start with one account, then activate the journey you need.
|
||||
- generic [ref=e73]:
|
||||
- article [ref=e74]:
|
||||
- img "Post a Job" [ref=e76]
|
||||
- generic [ref=e78]:
|
||||
- generic [ref=e79]:
|
||||
- img [ref=e81]
|
||||
- generic [ref=e85]:
|
||||
- img [ref=e86]
|
||||
- text: Company
|
||||
- heading "Post a Job" [level=3] [ref=e89]
|
||||
- paragraph [ref=e90]: Create verified job openings and find the right talent faster.
|
||||
- link "Explore Company" [ref=e91] [cursor=pointer]:
|
||||
- /url: /roles/company
|
||||
- article [ref=e92]:
|
||||
- img "Apply for Jobs" [ref=e94]
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- img [ref=e99]
|
||||
- generic [ref=e102]:
|
||||
- img [ref=e103]
|
||||
- text: Job Seeker
|
||||
- heading "Apply for Jobs" [level=3] [ref=e106]
|
||||
- paragraph [ref=e107]: Build your profile and apply to approved opportunities quickly.
|
||||
- link "Explore Job Seeker" [ref=e108] [cursor=pointer]:
|
||||
- /url: /roles/job-seeker
|
||||
- article [ref=e109]:
|
||||
- img "Hire a Professional" [ref=e111]
|
||||
- generic [ref=e113]:
|
||||
- generic [ref=e114]:
|
||||
- img [ref=e116]
|
||||
- generic [ref=e121]:
|
||||
- img [ref=e122]
|
||||
- text: Customer
|
||||
- heading "Hire a Professional" [level=3] [ref=e125]
|
||||
- paragraph [ref=e126]: Post your requirement and discover trusted specialists.
|
||||
- link "Explore Customer" [ref=e127] [cursor=pointer]:
|
||||
- /url: /roles/customer
|
||||
- article [ref=e128]:
|
||||
- img "Join as Professional" [ref=e130]
|
||||
- generic [ref=e132]:
|
||||
- generic [ref=e133]:
|
||||
- img [ref=e135]
|
||||
- generic [ref=e139]:
|
||||
- img [ref=e140]
|
||||
- text: Professional
|
||||
- heading "Join as Professional" [level=3] [ref=e143]
|
||||
- paragraph [ref=e144]: Create a trusted profile and grow through verified demand.
|
||||
- link "Explore Professionals" [ref=e145] [cursor=pointer]:
|
||||
- /url: /professionals
|
||||
- generic [ref=e147]:
|
||||
- generic [ref=e148]:
|
||||
- heading "Explore professional categories" [level=2] [ref=e150]
|
||||
- link "View all professionals" [ref=e151] [cursor=pointer]:
|
||||
- /url: /professionals
|
||||
- generic [ref=e152]:
|
||||
- button "All" [ref=e153] [cursor=pointer]
|
||||
- button "Creative" [ref=e154] [cursor=pointer]
|
||||
- button "Tech" [ref=e155] [cursor=pointer]
|
||||
- button "Education" [ref=e156] [cursor=pointer]
|
||||
- button "Wellness" [ref=e157] [cursor=pointer]
|
||||
- button "Events" [ref=e158] [cursor=pointer]
|
||||
- button "Marketing" [ref=e159] [cursor=pointer]
|
||||
- generic [ref=e160]:
|
||||
- article [ref=e161]:
|
||||
- img "Developer" [ref=e163]
|
||||
- generic [ref=e165]:
|
||||
- generic [ref=e167]: tech
|
||||
- heading "Developer" [level=3] [ref=e168]
|
||||
- paragraph [ref=e169]: Join Nxtgauge as a Developer and connect with customers and companies through a trust-first workflow.
|
||||
- generic [ref=e170]:
|
||||
- link "Explore Developer" [ref=e171] [cursor=pointer]:
|
||||
- /url: /professionals/developer
|
||||
- link "Join Developer" [ref=e172] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=DEVELOPER
|
||||
- article [ref=e173]:
|
||||
- img "Photographer" [ref=e175]
|
||||
- generic [ref=e177]:
|
||||
- generic [ref=e179]: creative
|
||||
- heading "Photographer" [level=3] [ref=e180]
|
||||
- paragraph [ref=e181]: Join as a Photographer and receive opportunities where trust and profile quality matter.
|
||||
- generic [ref=e182]:
|
||||
- link "Explore Photographer" [ref=e183] [cursor=pointer]:
|
||||
- /url: /professionals/photographer
|
||||
- link "Join Photographer" [ref=e184] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=PHOTOGRAPHER
|
||||
- article [ref=e185]:
|
||||
- img "Makeup Artist" [ref=e187]
|
||||
- generic [ref=e189]:
|
||||
- generic [ref=e191]: creative
|
||||
- heading "Makeup Artist" [level=3] [ref=e192]
|
||||
- paragraph [ref=e193]: Join Nxtgauge as a Makeup Artist and connect with verified requirements from customers and event planners.
|
||||
- generic [ref=e194]:
|
||||
- link "Explore Makeup Artist" [ref=e195] [cursor=pointer]:
|
||||
- /url: /professionals/makeup-artist
|
||||
- link "Join Makeup Artist" [ref=e196] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=MAKEUP_ARTIST
|
||||
- article [ref=e197]:
|
||||
- img "Tutor" [ref=e199]
|
||||
- generic [ref=e201]:
|
||||
- generic [ref=e203]: education
|
||||
- heading "Tutor" [level=3] [ref=e204]
|
||||
- paragraph [ref=e205]: Join as a Tutor to receive verified educational requirements and present your profile with confidence.
|
||||
- generic [ref=e206]:
|
||||
- link "Explore Tutor" [ref=e207] [cursor=pointer]:
|
||||
- /url: /professionals/tutor
|
||||
- link "Join Tutor" [ref=e208] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=TUTOR
|
||||
- article [ref=e209]:
|
||||
- img "Video Editor" [ref=e211]
|
||||
- generic [ref=e213]:
|
||||
- generic [ref=e215]: creative
|
||||
- heading "Video Editor" [level=3] [ref=e216]
|
||||
- paragraph [ref=e217]: Join as a Video Editor and connect with customers and companies through a review-based trust model.
|
||||
- generic [ref=e218]:
|
||||
- link "Explore Video Editor" [ref=e219] [cursor=pointer]:
|
||||
- /url: /professionals/video-editor
|
||||
- link "Join Video Editor" [ref=e220] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=VIDEO_EDITOR
|
||||
- article [ref=e221]:
|
||||
- img "Graphic Designer" [ref=e223]
|
||||
- generic [ref=e225]:
|
||||
- generic [ref=e227]: creative
|
||||
- heading "Graphic Designer" [level=3] [ref=e228]
|
||||
- paragraph [ref=e229]: Join as a Graphic Designer to connect with verified requirements and role-relevant opportunities.
|
||||
- generic [ref=e230]:
|
||||
- link "Explore Graphic Designer" [ref=e231] [cursor=pointer]:
|
||||
- /url: /professionals/graphic-designer
|
||||
- link "Join Graphic Designer" [ref=e232] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=GRAPHIC_DESIGNER
|
||||
- article [ref=e233]:
|
||||
- img "Social Media Manager" [ref=e235]
|
||||
- generic [ref=e237]:
|
||||
- generic [ref=e239]: marketing
|
||||
- heading "Social Media Manager" [level=3] [ref=e240]
|
||||
- paragraph [ref=e241]: Join as a Social Media Manager and grow with trusted customer and company requirements.
|
||||
- generic [ref=e242]:
|
||||
- link "Explore Social Media Manager" [ref=e243] [cursor=pointer]:
|
||||
- /url: /professionals/social-media-manager
|
||||
- link "Join Social Media Manager" [ref=e244] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=SOCIAL_MEDIA_MANAGER
|
||||
- article [ref=e245]:
|
||||
- img "Fitness Trainer" [ref=e247]
|
||||
- generic [ref=e249]:
|
||||
- generic [ref=e251]: wellness
|
||||
- heading "Fitness Trainer" [level=3] [ref=e252]
|
||||
- paragraph [ref=e253]: Join as a Fitness Trainer and grow through profile-led visibility in a trust-first marketplace.
|
||||
- generic [ref=e254]:
|
||||
- link "Explore Fitness Trainer" [ref=e255] [cursor=pointer]:
|
||||
- /url: /professionals/fitness-trainer
|
||||
- link "Join Fitness Trainer" [ref=e256] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=FITNESS_TRAINER
|
||||
- generic [ref=e258]:
|
||||
- generic [ref=e259]:
|
||||
- paragraph [ref=e260]: Why Nxtgauge
|
||||
- heading "Trust, approvals, and better matching in one flow." [level=2] [ref=e261]
|
||||
- generic [ref=e262]:
|
||||
- article [ref=e263]:
|
||||
- generic [ref=e265]:
|
||||
- paragraph [ref=e266]: Capability 1 of 6
|
||||
- img [ref=e268]
|
||||
- heading "Verified profiles & businesses" [level=3] [ref=e271]
|
||||
- paragraph [ref=e272]: Identity and profile checks reduce fake submissions and spam.
|
||||
- generic [ref=e274]:
|
||||
- button "Show Verified profiles & businesses" [ref=e275]:
|
||||
- img [ref=e276]
|
||||
- button "Show Approval-based quality (24-48 hours)" [ref=e279]:
|
||||
- img [ref=e280]
|
||||
- button "Show Smart matching using tags/skills" [ref=e282]:
|
||||
- img [ref=e283]
|
||||
- button "Show Focused discovery with filters" [ref=e285]:
|
||||
- img [ref=e286]
|
||||
- button "Show Controlled contact visibility" [ref=e289]:
|
||||
- img [ref=e290]
|
||||
- button "Show Notifications & updates" [ref=e293]:
|
||||
- img [ref=e294]
|
||||
- generic [ref=e297]:
|
||||
- button "Previous slide" [ref=e298]: ◀
|
||||
- button "Next slide" [ref=e299]: ▶
|
||||
- generic [ref=e301]:
|
||||
- generic [ref=e302]:
|
||||
- paragraph [ref=e303]: How it works
|
||||
- heading "Clear journey, zero confusion" [level=2] [ref=e304]
|
||||
- article [ref=e305]:
|
||||
- generic [ref=e306]:
|
||||
- img "Customers role" [ref=e308]
|
||||
- generic [ref=e309]:
|
||||
- paragraph [ref=e310]: Customers
|
||||
- heading "Hire trusted professionals with less noise" [level=3] [ref=e311]
|
||||
- paragraph [ref=e312]: Post requirements, pass review checks, and receive better-fit responses.
|
||||
- generic [ref=e313]:
|
||||
- paragraph [ref=e314]: Step Flow
|
||||
- generic [ref=e315]:
|
||||
- generic [ref=e316]:
|
||||
- generic [ref=e317]: "1"
|
||||
- generic [ref=e318]:
|
||||
- heading "Create account" [level=4] [ref=e319]
|
||||
- paragraph [ref=e320]: Sign up quickly with customer intent.
|
||||
- generic [ref=e321]:
|
||||
- generic [ref=e322]: "2"
|
||||
- generic [ref=e323]:
|
||||
- heading "Share requirement" [level=4] [ref=e324]
|
||||
- paragraph [ref=e325]: Add budget, scope, and timing.
|
||||
- generic [ref=e326]:
|
||||
- generic [ref=e327]: "3"
|
||||
- generic [ref=e328]:
|
||||
- heading "Review and verify" [level=4] [ref=e329]
|
||||
- paragraph [ref=e330]: Quality checks run before visibility.
|
||||
- generic [ref=e331]:
|
||||
- generic [ref=e332]: "4"
|
||||
- generic [ref=e333]:
|
||||
- heading "Track responses" [level=4] [ref=e334]
|
||||
- paragraph [ref=e335]: Monitor replies and status updates.
|
||||
- generic [ref=e337]:
|
||||
- button "Previous role" [ref=e338]: ←
|
||||
- button "Next role" [ref=e339]: →
|
||||
- generic [ref=e346]:
|
||||
- heading "Frequently asked questions" [level=2] [ref=e347]
|
||||
- paragraph [ref=e348]: Quick answers before you create your account.
|
||||
- generic [ref=e349]:
|
||||
- article [ref=e350]:
|
||||
- button "What is Nxtgauge? ⌄" [ref=e351] [cursor=pointer]:
|
||||
- generic [ref=e352]: What is Nxtgauge?
|
||||
- generic [ref=e353]: ⌄
|
||||
- paragraph [ref=e354]: Nxtgauge connects customers, professionals, companies, and job seekers in one trusted platform.
|
||||
- article [ref=e355]:
|
||||
- button "Who can join Nxtgauge? ⌄" [ref=e356] [cursor=pointer]:
|
||||
- generic [ref=e357]: Who can join Nxtgauge?
|
||||
- generic [ref=e358]: ⌄
|
||||
- article [ref=e359]:
|
||||
- button "Why does Nxtgauge require verification? ⌄" [ref=e360] [cursor=pointer]:
|
||||
- generic [ref=e361]: Why does Nxtgauge require verification?
|
||||
- generic [ref=e362]: ⌄
|
||||
- article [ref=e363]:
|
||||
- button "How long does account approval take? ⌄" [ref=e364] [cursor=pointer]:
|
||||
- generic [ref=e365]: How long does account approval take?
|
||||
- generic [ref=e366]: ⌄
|
||||
- article [ref=e367]:
|
||||
- button "Do I need to choose my role during signup? ⌄" [ref=e368] [cursor=pointer]:
|
||||
- generic [ref=e369]: Do I need to choose my role during signup?
|
||||
- generic [ref=e370]: ⌄
|
||||
- generic [ref=e372]:
|
||||
- generic [ref=e373]:
|
||||
- paragraph [ref=e374]: Quick Actions
|
||||
- heading "Start with one account. Choose your path after." [level=2] [ref=e375]
|
||||
- paragraph [ref=e376]: Hire, post, apply, or join as a professional from stable role-specific pages.
|
||||
- generic [ref=e377]:
|
||||
- link "Get Started" [ref=e378] [cursor=pointer]:
|
||||
- /url: /signup/customer
|
||||
- link "Explore Professionals" [ref=e379] [cursor=pointer]:
|
||||
- /url: /professionals
|
||||
- link "Post a Job" [ref=e380] [cursor=pointer]:
|
||||
- /url: /signup/company
|
||||
- generic [ref=e382]:
|
||||
- img "NXTGAUGE" [ref=e383]
|
||||
- paragraph [ref=e384]: © 2026 Nxtgauge. All rights reserved.
|
||||
- generic [ref=e385]:
|
||||
- link "Professionals" [ref=e386] [cursor=pointer]:
|
||||
- /url: /professionals
|
||||
- link "Terms" [ref=e387] [cursor=pointer]:
|
||||
- /url: /terms
|
||||
- link "Privacy" [ref=e388] [cursor=pointer]:
|
||||
- /url: /privacy
|
||||
- link "Help Center" [ref=e389] [cursor=pointer]:
|
||||
- /url: /help-center
|
||||
- button "AI Assistant" [ref=e390] [cursor=pointer]:
|
||||
- img [ref=e391]
|
||||
```
|
||||
|
||||
# Test source
|
||||
|
||||
```ts
|
||||
1 | import { test, expect } from "@playwright/test";
|
||||
2 | import AxeBuilder from "@axe-core/playwright";
|
||||
3 |
|
||||
4 | test.describe("Public Frontend Accessibility", () => {
|
||||
5 | test("homepage should have no accessibility violations", async ({ page }) => {
|
||||
6 | await page.goto("/");
|
||||
7 | const results = await new AxeBuilder({ page }).analyze();
|
||||
> 8 | expect(results.violations).toEqual([]);
|
||||
| ^ Error: expect(received).toEqual(expected) // deep equality
|
||||
9 | });
|
||||
10 |
|
||||
11 | test("professionals listing page should be accessible", async ({ page }) => {
|
||||
12 | await page.goto("/professionals");
|
||||
13 | const results = await new AxeBuilder({ page }).analyze();
|
||||
14 | expect(results.violations).toEqual([]);
|
||||
15 | });
|
||||
16 | });
|
||||
17 |
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> AI API Endpoints >> Company AI - Generate Job Field >> POST /ai/generate-job-field returns generated content
|
||||
- Location: tests/e2e/api.spec.ts:41:5
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 65
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> Auth API Endpoints >> POST /auth/login rate limits after too many attempts
|
||||
- Location: tests/e2e/api.spec.ts:215:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 65
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> Auth API Endpoints >> POST /auth/login returns token for valid credentials
|
||||
- Location: tests/e2e/api.spec.ts:182:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 61
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Token Handling >> Expired token is rejected
|
||||
- Location: tests/e2e/security.spec.ts:262:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiZXhwIjoxNjAwMDAwMDAwfQ.dummysignature
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> AI API Endpoints >> Company AI - Generate Job Field >> POST /ai/generate-job-field rate limits after daily quota
|
||||
- Location: tests/e2e/api.spec.ts:91:5
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 65
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> JWT token is not returned for invalid credentials
|
||||
- Location: tests/e2e/security.spec.ts:6:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 62
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> AI API Endpoints >> AI Usage Endpoint >> GET /ai/usage returns usage stats for company
|
||||
- Location: tests/e2e/api.spec.ts:144:5
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 65
|
||||
|
||||
```
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1 MiB |
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Input Validation >> Very long input is handled without crash
|
||||
- Location: tests/e2e/security.spec.ts:175:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 20038
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Input Validation >> SQL injection in login email is handled safely
|
||||
- Location: tests/e2e/security.spec.ts:149:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 45
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> Auth API Endpoints >> POST /auth/login returns 401 for invalid credentials
|
||||
- Location: tests/e2e/api.spec.ts:202:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 58
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> Gateway API >> Gateway returns 404 for unknown routes
|
||||
- Location: tests/e2e/api.spec.ts:255:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/nonexistent-route
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Input Validation >> Very long input is handled without crash
|
||||
- Location: tests/e2e/security.spec.ts:175:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 20038
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Token Handling >> Expired token is rejected
|
||||
- Location: tests/e2e/security.spec.ts:262:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiZXhwIjoxNjAwMDAwMDAwfQ.dummysignature
|
||||
|
||||
```
|
||||
Binary file not shown.
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Rate Limiting >> AI endpoints rate limit after daily quota exceeded
|
||||
- Location: tests/e2e/security.spec.ts:108:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 65
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> Protected endpoint rejects request without token
|
||||
- Location: tests/e2e/security.spec.ts:42:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
|
||||
```
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 360 KiB |
Binary file not shown.
|
|
@ -0,0 +1,22 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Response Headers >> API error responses do not expose server internals
|
||||
- Location: tests/e2e/security.spec.ts:248:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/api/nonexistent
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Input Validation >> SQL injection in login email is handled safely
|
||||
- Location: tests/e2e/security.spec.ts:149:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 45
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> Auth API Endpoints >> POST /auth/login rate limits after too many attempts
|
||||
- Location: tests/e2e/api.spec.ts:215:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 65
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> Gateway API >> Gateway routes /api/ai/* to users service
|
||||
- Location: tests/e2e/api.spec.ts:240:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- Authorization: Bearer dummy
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: api.spec.ts >> AI API Endpoints >> Company AI - Generate Job Field >> POST /ai/generate-job-field rate limits after daily quota
|
||||
- Location: tests/e2e/api.spec.ts:91:5
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 65
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> Login without email returns proper error
|
||||
- Location: tests/e2e/security.spec.ts:20:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.post: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → POST http://localhost:3000/api/auth/login
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- content-type: application/json
|
||||
- content-length: 27
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> Protected endpoint rejects request with empty Bearer token
|
||||
- Location: tests/e2e/security.spec.ts:60:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- Authorization: Bearer
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Authentication >> Protected endpoint rejects request with empty Bearer token
|
||||
- Location: tests/e2e/security.spec.ts:60:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/ai/usage
|
||||
- user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
- Authorization: Bearer
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: security.spec.ts >> Security - Response Headers >> API error responses do not expose server internals
|
||||
- Location: tests/e2e/security.spec.ts:248:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: apiRequestContext.get: connect ECONNREFUSED ::1:3000
|
||||
Call log:
|
||||
- → GET http://localhost:3000/api/api/nonexistent
|
||||
- user-agent: Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.7778.96 Mobile Safari/537.36
|
||||
- accept: */*
|
||||
- accept-encoding: gzip,deflate,br
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,442 @@
|
|||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: accessibility.spec.ts >> Public Frontend Accessibility >> homepage should have no accessibility violations
|
||||
- Location: tests/e2e/accessibility.spec.ts:5:3
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: expect(received).toEqual(expected) // deep equality
|
||||
|
||||
- Expected - 1
|
||||
+ Received + 58
|
||||
|
||||
- Array []
|
||||
+ Array [
|
||||
+ Object {
|
||||
+ "description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
||||
+ "help": "Elements must meet minimum color contrast ratio thresholds",
|
||||
+ "helpUrl": "https://dequeuniversity.com/rules/axe/4.11/color-contrast?application=playwright",
|
||||
+ "id": "color-contrast",
|
||||
+ "impact": "serious",
|
||||
+ "nodes": Array [
|
||||
+ Object {
|
||||
+ "all": Array [],
|
||||
+ "any": Array [
|
||||
+ Object {
|
||||
+ "data": Object {
|
||||
+ "bgColor": "#fd6116",
|
||||
+ "contrastRatio": 3.04,
|
||||
+ "expectedContrastRatio": "4.5:1",
|
||||
+ "fgColor": "#ffffff",
|
||||
+ "fontSize": "10.5pt (14px)",
|
||||
+ "fontWeight": "normal",
|
||||
+ "messageKey": null,
|
||||
+ },
|
||||
+ "id": "color-contrast",
|
||||
+ "impact": "serious",
|
||||
+ "message": "Element has insufficient color contrast of 3.04 (foreground color: #ffffff, background color: #fd6116, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
|
||||
+ "relatedNodes": Array [
|
||||
+ Object {
|
||||
+ "html": "<button data-hk=\"00000001000001000000000a1080\" type=\"button\" class=\"chip-btn active\">All</button>",
|
||||
+ "target": Array [
|
||||
+ "button[data-hk=\"00000001000001000000000a1080\"]",
|
||||
+ ],
|
||||
+ },
|
||||
+ ],
|
||||
+ },
|
||||
+ ],
|
||||
+ "failureSummary": "Fix any of the following:
|
||||
+ Element has insufficient color contrast of 3.04 (foreground color: #ffffff, background color: #fd6116, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
|
||||
+ "html": "<button data-hk=\"00000001000001000000000a1080\" type=\"button\" class=\"chip-btn active\">All</button>",
|
||||
+ "impact": "serious",
|
||||
+ "none": Array [],
|
||||
+ "target": Array [
|
||||
+ "button[data-hk=\"00000001000001000000000a1080\"]",
|
||||
+ ],
|
||||
+ },
|
||||
+ ],
|
||||
+ "tags": Array [
|
||||
+ "cat.color",
|
||||
+ "wcag2aa",
|
||||
+ "wcag143",
|
||||
+ "TTv5",
|
||||
+ "TT13.c",
|
||||
+ "EN-301-549",
|
||||
+ "EN-9.1.4.3",
|
||||
+ "ACT",
|
||||
+ "RGAAv4",
|
||||
+ "RGAA-3.2.1",
|
||||
+ ],
|
||||
+ },
|
||||
+ ]
|
||||
```
|
||||
|
||||
# Page snapshot
|
||||
|
||||
```yaml
|
||||
- generic [ref=e2]:
|
||||
- main [ref=e3]:
|
||||
- generic:
|
||||
- generic:
|
||||
- generic:
|
||||
- img
|
||||
- generic:
|
||||
- img
|
||||
- generic:
|
||||
- img
|
||||
- generic:
|
||||
- img
|
||||
- generic:
|
||||
- img
|
||||
- generic [ref=e4]:
|
||||
- navigation [ref=e6]:
|
||||
- link "Nxtgauge home" [ref=e7] [cursor=pointer]:
|
||||
- /url: /
|
||||
- img "NXTGAUGE" [ref=e8]
|
||||
- generic [ref=e9]:
|
||||
- link "Home" [ref=e10] [cursor=pointer]:
|
||||
- /url: /
|
||||
- link "Professionals" [ref=e11] [cursor=pointer]:
|
||||
- /url: /professionals
|
||||
- link "About Us" [ref=e12] [cursor=pointer]:
|
||||
- /url: /about
|
||||
- link "Help Center" [ref=e13] [cursor=pointer]:
|
||||
- /url: /help-center
|
||||
- link "Contact Us" [ref=e14] [cursor=pointer]:
|
||||
- /url: /contact
|
||||
- link "Login" [ref=e16] [cursor=pointer]:
|
||||
- /url: /login
|
||||
- generic [ref=e18]:
|
||||
- generic [ref=e19]:
|
||||
- heading "Trusted hiring and opportunities, verified." [level=1] [ref=e20]
|
||||
- paragraph [ref=e21]: Hire trusted professionals, post verified jobs, and apply faster in one platform.
|
||||
- generic [ref=e22]:
|
||||
- link "Get Started" [ref=e23] [cursor=pointer]:
|
||||
- /url: /signup/customer
|
||||
- link "How It Works" [ref=e24] [cursor=pointer]:
|
||||
- /url: /#how-it-works
|
||||
- paragraph [ref=e25]: Most profile and listing reviews are completed within 24-48 hours.
|
||||
- region "Nxtgauge opportunity graph preview" [ref=e27]:
|
||||
- generic [ref=e28]:
|
||||
- generic [ref=e29]:
|
||||
- img [ref=e30]
|
||||
- generic [ref=e47]: Developer
|
||||
- generic [ref=e48]:
|
||||
- generic [ref=e49]:
|
||||
- generic [ref=e50]: ✓
|
||||
- generic [ref=e51]: Everything from Nxtgauge
|
||||
- paragraph [ref=e52]: Opportunity Workspace
|
||||
- generic [ref=e53]:
|
||||
- strong [ref=e54]: Verified Profiles
|
||||
- generic [ref=e55]: Trust layer ready
|
||||
- generic [ref=e56]:
|
||||
- strong [ref=e57]: Matched Opportunities
|
||||
- generic [ref=e58]: Priority queue
|
||||
- generic [ref=e59]:
|
||||
- strong [ref=e60]: Responses
|
||||
- generic [ref=e61]: Tracked in one flow
|
||||
- generic [ref=e62]:
|
||||
- strong [ref=e63]: Updates
|
||||
- generic [ref=e64]: Live status signals
|
||||
- paragraph [ref=e66]: Opportunities start scattered
|
||||
- generic [ref=e68]:
|
||||
- generic [ref=e70]:
|
||||
- heading "Who Nxtgauge is for" [level=2] [ref=e71]
|
||||
- paragraph [ref=e72]: Start with one account, then activate the journey you need.
|
||||
- generic [ref=e73]:
|
||||
- article [ref=e74]:
|
||||
- img "Post a Job" [ref=e76]
|
||||
- generic [ref=e78]:
|
||||
- generic [ref=e79]:
|
||||
- img [ref=e81]
|
||||
- generic [ref=e85]:
|
||||
- img [ref=e86]
|
||||
- text: Company
|
||||
- heading "Post a Job" [level=3] [ref=e89]
|
||||
- paragraph [ref=e90]: Create verified job openings and find the right talent faster.
|
||||
- link "Explore Company" [ref=e91] [cursor=pointer]:
|
||||
- /url: /roles/company
|
||||
- article [ref=e92]:
|
||||
- img "Apply for Jobs" [ref=e94]
|
||||
- generic [ref=e96]:
|
||||
- generic [ref=e97]:
|
||||
- img [ref=e99]
|
||||
- generic [ref=e102]:
|
||||
- img [ref=e103]
|
||||
- text: Job Seeker
|
||||
- heading "Apply for Jobs" [level=3] [ref=e106]
|
||||
- paragraph [ref=e107]: Build your profile and apply to approved opportunities quickly.
|
||||
- link "Explore Job Seeker" [ref=e108] [cursor=pointer]:
|
||||
- /url: /roles/job-seeker
|
||||
- article [ref=e109]:
|
||||
- img "Hire a Professional" [ref=e111]
|
||||
- generic [ref=e113]:
|
||||
- generic [ref=e114]:
|
||||
- img [ref=e116]
|
||||
- generic [ref=e121]:
|
||||
- img [ref=e122]
|
||||
- text: Customer
|
||||
- heading "Hire a Professional" [level=3] [ref=e125]
|
||||
- paragraph [ref=e126]: Post your requirement and discover trusted specialists.
|
||||
- link "Explore Customer" [ref=e127] [cursor=pointer]:
|
||||
- /url: /roles/customer
|
||||
- article [ref=e128]:
|
||||
- img "Join as Professional" [ref=e130]
|
||||
- generic [ref=e132]:
|
||||
- generic [ref=e133]:
|
||||
- img [ref=e135]
|
||||
- generic [ref=e139]:
|
||||
- img [ref=e140]
|
||||
- text: Professional
|
||||
- heading "Join as Professional" [level=3] [ref=e143]
|
||||
- paragraph [ref=e144]: Create a trusted profile and grow through verified demand.
|
||||
- link "Explore Professionals" [ref=e145] [cursor=pointer]:
|
||||
- /url: /professionals
|
||||
- generic [ref=e147]:
|
||||
- generic [ref=e148]:
|
||||
- heading "Explore professional categories" [level=2] [ref=e150]
|
||||
- link "View all professionals" [ref=e151] [cursor=pointer]:
|
||||
- /url: /professionals
|
||||
- generic [ref=e152]:
|
||||
- button "All" [ref=e153] [cursor=pointer]
|
||||
- button "Creative" [ref=e154] [cursor=pointer]
|
||||
- button "Tech" [ref=e155] [cursor=pointer]
|
||||
- button "Education" [ref=e156] [cursor=pointer]
|
||||
- button "Wellness" [ref=e157] [cursor=pointer]
|
||||
- button "Events" [ref=e158] [cursor=pointer]
|
||||
- button "Marketing" [ref=e159] [cursor=pointer]
|
||||
- generic [ref=e160]:
|
||||
- article [ref=e161]:
|
||||
- img "Developer" [ref=e163]
|
||||
- generic [ref=e165]:
|
||||
- generic [ref=e167]: tech
|
||||
- heading "Developer" [level=3] [ref=e168]
|
||||
- paragraph [ref=e169]: Join Nxtgauge as a Developer and connect with customers and companies through a trust-first workflow.
|
||||
- generic [ref=e170]:
|
||||
- link "Explore Developer" [ref=e171] [cursor=pointer]:
|
||||
- /url: /professionals/developer
|
||||
- link "Join Developer" [ref=e172] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=DEVELOPER
|
||||
- article [ref=e173]:
|
||||
- img "Photographer" [ref=e175]
|
||||
- generic [ref=e177]:
|
||||
- generic [ref=e179]: creative
|
||||
- heading "Photographer" [level=3] [ref=e180]
|
||||
- paragraph [ref=e181]: Join as a Photographer and receive opportunities where trust and profile quality matter.
|
||||
- generic [ref=e182]:
|
||||
- link "Explore Photographer" [ref=e183] [cursor=pointer]:
|
||||
- /url: /professionals/photographer
|
||||
- link "Join Photographer" [ref=e184] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=PHOTOGRAPHER
|
||||
- article [ref=e185]:
|
||||
- img "Makeup Artist" [ref=e187]
|
||||
- generic [ref=e189]:
|
||||
- generic [ref=e191]: creative
|
||||
- heading "Makeup Artist" [level=3] [ref=e192]
|
||||
- paragraph [ref=e193]: Join Nxtgauge as a Makeup Artist and connect with verified requirements from customers and event planners.
|
||||
- generic [ref=e194]:
|
||||
- link "Explore Makeup Artist" [ref=e195] [cursor=pointer]:
|
||||
- /url: /professionals/makeup-artist
|
||||
- link "Join Makeup Artist" [ref=e196] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=MAKEUP_ARTIST
|
||||
- article [ref=e197]:
|
||||
- img "Tutor" [ref=e199]
|
||||
- generic [ref=e201]:
|
||||
- generic [ref=e203]: education
|
||||
- heading "Tutor" [level=3] [ref=e204]
|
||||
- paragraph [ref=e205]: Join as a Tutor to receive verified educational requirements and present your profile with confidence.
|
||||
- generic [ref=e206]:
|
||||
- link "Explore Tutor" [ref=e207] [cursor=pointer]:
|
||||
- /url: /professionals/tutor
|
||||
- link "Join Tutor" [ref=e208] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=TUTOR
|
||||
- article [ref=e209]:
|
||||
- img "Video Editor" [ref=e211]
|
||||
- generic [ref=e213]:
|
||||
- generic [ref=e215]: creative
|
||||
- heading "Video Editor" [level=3] [ref=e216]
|
||||
- paragraph [ref=e217]: Join as a Video Editor and connect with customers and companies through a review-based trust model.
|
||||
- generic [ref=e218]:
|
||||
- link "Explore Video Editor" [ref=e219] [cursor=pointer]:
|
||||
- /url: /professionals/video-editor
|
||||
- link "Join Video Editor" [ref=e220] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=VIDEO_EDITOR
|
||||
- article [ref=e221]:
|
||||
- img "Graphic Designer" [ref=e223]
|
||||
- generic [ref=e225]:
|
||||
- generic [ref=e227]: creative
|
||||
- heading "Graphic Designer" [level=3] [ref=e228]
|
||||
- paragraph [ref=e229]: Join as a Graphic Designer to connect with verified requirements and role-relevant opportunities.
|
||||
- generic [ref=e230]:
|
||||
- link "Explore Graphic Designer" [ref=e231] [cursor=pointer]:
|
||||
- /url: /professionals/graphic-designer
|
||||
- link "Join Graphic Designer" [ref=e232] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=GRAPHIC_DESIGNER
|
||||
- article [ref=e233]:
|
||||
- img "Social Media Manager" [ref=e235]
|
||||
- generic [ref=e237]:
|
||||
- generic [ref=e239]: marketing
|
||||
- heading "Social Media Manager" [level=3] [ref=e240]
|
||||
- paragraph [ref=e241]: Join as a Social Media Manager and grow with trusted customer and company requirements.
|
||||
- generic [ref=e242]:
|
||||
- link "Explore Social Media Manager" [ref=e243] [cursor=pointer]:
|
||||
- /url: /professionals/social-media-manager
|
||||
- link "Join Social Media Manager" [ref=e244] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=SOCIAL_MEDIA_MANAGER
|
||||
- article [ref=e245]:
|
||||
- img "Fitness Trainer" [ref=e247]
|
||||
- generic [ref=e249]:
|
||||
- generic [ref=e251]: wellness
|
||||
- heading "Fitness Trainer" [level=3] [ref=e252]
|
||||
- paragraph [ref=e253]: Join as a Fitness Trainer and grow through profile-led visibility in a trust-first marketplace.
|
||||
- generic [ref=e254]:
|
||||
- link "Explore Fitness Trainer" [ref=e255] [cursor=pointer]:
|
||||
- /url: /professionals/fitness-trainer
|
||||
- link "Join Fitness Trainer" [ref=e256] [cursor=pointer]:
|
||||
- /url: /signup?intent=professional&role=FITNESS_TRAINER
|
||||
- generic [ref=e258]:
|
||||
- generic [ref=e259]:
|
||||
- paragraph [ref=e260]: Why Nxtgauge
|
||||
- heading "Trust, approvals, and better matching in one flow." [level=2] [ref=e261]
|
||||
- generic [ref=e262]:
|
||||
- article [ref=e263]:
|
||||
- generic [ref=e265]:
|
||||
- paragraph [ref=e266]: Capability 1 of 6
|
||||
- img [ref=e268]
|
||||
- heading "Verified profiles & businesses" [level=3] [ref=e271]
|
||||
- paragraph [ref=e272]: Identity and profile checks reduce fake submissions and spam.
|
||||
- generic [ref=e274]:
|
||||
- button "Show Verified profiles & businesses" [ref=e275]:
|
||||
- img [ref=e276]
|
||||
- button "Show Approval-based quality (24-48 hours)" [ref=e279]:
|
||||
- img [ref=e280]
|
||||
- button "Show Smart matching using tags/skills" [ref=e282]:
|
||||
- img [ref=e283]
|
||||
- button "Show Focused discovery with filters" [ref=e285]:
|
||||
- img [ref=e286]
|
||||
- button "Show Controlled contact visibility" [ref=e289]:
|
||||
- img [ref=e290]
|
||||
- button "Show Notifications & updates" [ref=e293]:
|
||||
- img [ref=e294]
|
||||
- generic [ref=e297]:
|
||||
- button "Previous slide" [ref=e298]: ◀
|
||||
- button "Next slide" [ref=e299]: ▶
|
||||
- generic [ref=e301]:
|
||||
- generic [ref=e302]:
|
||||
- paragraph [ref=e303]: How it works
|
||||
- heading "Clear journey, zero confusion" [level=2] [ref=e304]
|
||||
- article [ref=e305]:
|
||||
- generic [ref=e306]:
|
||||
- img "Customers role" [ref=e308]
|
||||
- generic [ref=e309]:
|
||||
- paragraph [ref=e310]: Customers
|
||||
- heading "Hire trusted professionals with less noise" [level=3] [ref=e311]
|
||||
- paragraph [ref=e312]: Post requirements, pass review checks, and receive better-fit responses.
|
||||
- generic [ref=e313]:
|
||||
- paragraph [ref=e314]: Step Flow
|
||||
- generic [ref=e315]:
|
||||
- generic [ref=e316]:
|
||||
- generic [ref=e317]: "1"
|
||||
- generic [ref=e318]:
|
||||
- heading "Create account" [level=4] [ref=e319]
|
||||
- paragraph [ref=e320]: Sign up quickly with customer intent.
|
||||
- generic [ref=e321]:
|
||||
- generic [ref=e322]: "2"
|
||||
- generic [ref=e323]:
|
||||
- heading "Share requirement" [level=4] [ref=e324]
|
||||
- paragraph [ref=e325]: Add budget, scope, and timing.
|
||||
- generic [ref=e326]:
|
||||
- generic [ref=e327]: "3"
|
||||
- generic [ref=e328]:
|
||||
- heading "Review and verify" [level=4] [ref=e329]
|
||||
- paragraph [ref=e330]: Quality checks run before visibility.
|
||||
- generic [ref=e331]:
|
||||
- generic [ref=e332]: "4"
|
||||
- generic [ref=e333]:
|
||||
- heading "Track responses" [level=4] [ref=e334]
|
||||
- paragraph [ref=e335]: Monitor replies and status updates.
|
||||
- generic [ref=e337]:
|
||||
- button "Previous role" [ref=e338]: ←
|
||||
- button "Next role" [ref=e339]: →
|
||||
- generic [ref=e346]:
|
||||
- heading "Frequently asked questions" [level=2] [ref=e347]
|
||||
- paragraph [ref=e348]: Quick answers before you create your account.
|
||||
- generic [ref=e349]:
|
||||
- article [ref=e350]:
|
||||
- button "What is Nxtgauge? ⌄" [ref=e351] [cursor=pointer]:
|
||||
- generic [ref=e352]: What is Nxtgauge?
|
||||
- generic [ref=e353]: ⌄
|
||||
- paragraph [ref=e354]: Nxtgauge connects customers, professionals, companies, and job seekers in one trusted platform.
|
||||
- article [ref=e355]:
|
||||
- button "Who can join Nxtgauge? ⌄" [ref=e356] [cursor=pointer]:
|
||||
- generic [ref=e357]: Who can join Nxtgauge?
|
||||
- generic [ref=e358]: ⌄
|
||||
- article [ref=e359]:
|
||||
- button "Why does Nxtgauge require verification? ⌄" [ref=e360] [cursor=pointer]:
|
||||
- generic [ref=e361]: Why does Nxtgauge require verification?
|
||||
- generic [ref=e362]: ⌄
|
||||
- article [ref=e363]:
|
||||
- button "How long does account approval take? ⌄" [ref=e364] [cursor=pointer]:
|
||||
- generic [ref=e365]: How long does account approval take?
|
||||
- generic [ref=e366]: ⌄
|
||||
- article [ref=e367]:
|
||||
- button "Do I need to choose my role during signup? ⌄" [ref=e368] [cursor=pointer]:
|
||||
- generic [ref=e369]: Do I need to choose my role during signup?
|
||||
- generic [ref=e370]: ⌄
|
||||
- generic [ref=e372]:
|
||||
- generic [ref=e373]:
|
||||
- paragraph [ref=e374]: Quick Actions
|
||||
- heading "Start with one account. Choose your path after." [level=2] [ref=e375]
|
||||
- paragraph [ref=e376]: Hire, post, apply, or join as a professional from stable role-specific pages.
|
||||
- generic [ref=e377]:
|
||||
- link "Get Started" [ref=e378] [cursor=pointer]:
|
||||
- /url: /signup/customer
|
||||
- link "Explore Professionals" [ref=e379] [cursor=pointer]:
|
||||
- /url: /professionals
|
||||
- link "Post a Job" [ref=e380] [cursor=pointer]:
|
||||
- /url: /signup/company
|
||||
- generic [ref=e382]:
|
||||
- img "NXTGAUGE" [ref=e383]
|
||||
- paragraph [ref=e384]: © 2026 Nxtgauge. All rights reserved.
|
||||
- generic [ref=e385]:
|
||||
- link "Professionals" [ref=e386] [cursor=pointer]:
|
||||
- /url: /professionals
|
||||
- link "Terms" [ref=e387] [cursor=pointer]:
|
||||
- /url: /terms
|
||||
- link "Privacy" [ref=e388] [cursor=pointer]:
|
||||
- /url: /privacy
|
||||
- link "Help Center" [ref=e389] [cursor=pointer]:
|
||||
- /url: /help-center
|
||||
- button "AI Assistant" [ref=e390] [cursor=pointer]:
|
||||
- img [ref=e391]
|
||||
```
|
||||
|
||||
# Test source
|
||||
|
||||
```ts
|
||||
1 | import { test, expect } from "@playwright/test";
|
||||
2 | import AxeBuilder from "@axe-core/playwright";
|
||||
3 |
|
||||
4 | test.describe("Public Frontend Accessibility", () => {
|
||||
5 | test("homepage should have no accessibility violations", async ({ page }) => {
|
||||
6 | await page.goto("/");
|
||||
7 | const results = await new AxeBuilder({ page }).analyze();
|
||||
> 8 | expect(results.violations).toEqual([]);
|
||||
| ^ Error: expect(received).toEqual(expected) // deep equality
|
||||
9 | });
|
||||
10 |
|
||||
11 | test("professionals listing page should be accessible", async ({ page }) => {
|
||||
12 | await page.goto("/professionals");
|
||||
13 | const results = await new AxeBuilder({ page }).analyze();
|
||||
14 | expect(results.violations).toEqual([]);
|
||||
15 | });
|
||||
16 | });
|
||||
17 |
|
||||
```
|
||||
File diff suppressed because one or more lines are too long
54
src/app.css
54
src/app.css
|
|
@ -861,16 +861,16 @@ body {
|
|||
}
|
||||
|
||||
.nav-auth-primary {
|
||||
border: 1px solid rgba(253, 98, 22, 0.72);
|
||||
background: #fd6116;
|
||||
border: 1px solid rgba(5, 0, 38, 0.72);
|
||||
background: #050026;
|
||||
color: #fff;
|
||||
box-shadow:
|
||||
0 0 0 1px rgba(253, 98, 22, 0.4) inset,
|
||||
0 12px 24px -16px rgba(253, 98, 22, 0.9);
|
||||
0 0 0 1px rgba(5, 0, 38, 0.4) inset,
|
||||
0 12px 24px -16px rgba(5, 0, 38, 0.9);
|
||||
}
|
||||
|
||||
.nav-auth-primary:hover {
|
||||
background: #eb5b14;
|
||||
background: #0a0040;
|
||||
}
|
||||
|
||||
.desktop-only {
|
||||
|
|
@ -952,8 +952,8 @@ body {
|
|||
}
|
||||
|
||||
.mobile-signup {
|
||||
border: 1px solid rgba(253, 98, 22, 0.72);
|
||||
background: #fd6116;
|
||||
border: 1px solid rgba(5, 0, 38, 0.72);
|
||||
background: #050026;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
|
@ -1142,10 +1142,10 @@ body {
|
|||
}
|
||||
|
||||
.chip-btn.active {
|
||||
border-color: #fd6116;
|
||||
background: #fd6116;
|
||||
color: #050026;
|
||||
box-shadow: 0 8px 18px -10px rgba(253, 97, 22, 0.8);
|
||||
border-color: #050026;
|
||||
background: #050026;
|
||||
color: #ffffff;
|
||||
box-shadow: 0 8px 18px -10px rgba(5, 0, 38, 0.4);
|
||||
}
|
||||
|
||||
.path-grid {
|
||||
|
|
@ -1637,7 +1637,7 @@ body {
|
|||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 999px;
|
||||
background: #fd6116;
|
||||
background: #050026;
|
||||
color: #fff;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
|
|
@ -2864,12 +2864,12 @@ body {
|
|||
}
|
||||
|
||||
.lp-primary-btn {
|
||||
border: 1px solid rgba(253, 98, 22, 0.72);
|
||||
background: #fd6116;
|
||||
border: 1px solid rgba(5, 0, 38, 0.72);
|
||||
background: #050026;
|
||||
color: #fff;
|
||||
box-shadow:
|
||||
0 0 0 1px rgba(253, 98, 22, 0.4) inset,
|
||||
0 12px 24px -16px rgba(253, 98, 22, 0.9);
|
||||
0 0 0 1px rgba(5, 0, 38, 0.4) inset,
|
||||
0 12px 24px -16px rgba(5, 0, 38, 0.9);
|
||||
}
|
||||
|
||||
.lp-primary-btn:hover {
|
||||
|
|
@ -4074,8 +4074,8 @@ body {
|
|||
}
|
||||
|
||||
.multi-select-tick.is-visible {
|
||||
border-color: #fd6116;
|
||||
background: #fd6116;
|
||||
border-color: #050026;
|
||||
background: #050026;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
|
|
@ -4312,7 +4312,7 @@ body {
|
|||
height: 44px;
|
||||
border: 0;
|
||||
border-radius: 12px;
|
||||
background: #fd6116;
|
||||
background: #050026;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
|
|
@ -4432,8 +4432,8 @@ body {
|
|||
width: 46px;
|
||||
height: 46px;
|
||||
border-radius: 999px;
|
||||
border: 1px solid rgba(253, 98, 22, 0.75);
|
||||
background: #fd6116;
|
||||
border: 1px solid rgba(5, 0, 38, 0.75);
|
||||
background: #050026;
|
||||
color: #fff;
|
||||
font-size: 20px;
|
||||
font-weight: 700;
|
||||
|
|
@ -5313,14 +5313,14 @@ body {
|
|||
width: 24px;
|
||||
height: 24px;
|
||||
border-radius: 999px;
|
||||
background: #fd6116;
|
||||
background: #050026;
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0 0 0 6px rgba(253, 98, 22, 0.12);
|
||||
box-shadow: 0 0 0 6px rgba(5, 0, 38, 0.12);
|
||||
}
|
||||
|
||||
.about-timeline-milestone h3 {
|
||||
|
|
@ -6554,13 +6554,13 @@ body {
|
|||
cursor: not-allowed;
|
||||
}
|
||||
.btn-primary {
|
||||
background: #fd6116;
|
||||
border-color: #fd6116;
|
||||
background: #050026;
|
||||
border-color: #050026;
|
||||
color: #fff;
|
||||
}
|
||||
.btn-primary:hover:not(:disabled) {
|
||||
background: #e45a14;
|
||||
border-color: #e45a14;
|
||||
background: #0a0040;
|
||||
border-color: #0a0040;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
import { test, expect, request } from "@playwright/test";
|
||||
|
||||
const API_BASE = "http://localhost:3000/api";
|
||||
const API_BASE = process.env.TEST_ENV === 'production'
|
||||
? "https://test111.nxtgauge.com/api"
|
||||
: "http://localhost:3000/api";
|
||||
|
||||
async function getAuthToken(): Promise<string | null> {
|
||||
const ctx = await request.newContext();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { test, expect, request } from "@playwright/test";
|
||||
|
||||
const API_BASE = "http://localhost:3000/api";
|
||||
const API_BASE = "https://test111.nxtgauge.com/api";
|
||||
|
||||
test.describe("Security - Authentication", () => {
|
||||
test("JWT token is not returned for invalid credentials", async () => {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue