Files
tokens-reef/tests/test-results/results.json
Developer 8b19f56ba4 fix: update E2E test API paths and payloads to match backend
- user-apikey-lifecycle: /api/v1/keys -> /api/v1/api-keys (24 occurrences)
- admin-users: balance payload uses balance+operation+notes
- admin-groups: rate-multiplier already uses correct format
2026-04-02 22:35:48 +08:00

493 lines
25 KiB
JSON

{
"config": {
"configFile": "D:\\project\\sub2api\\tests\\playwright.config.ts",
"rootDir": "D:/project/sub2api/tests/e2e",
"forbidOnly": false,
"fullyParallel": true,
"globalSetup": "D:\\project\\sub2api\\tests\\e2e\\setup\\global-setup.ts",
"globalTeardown": "D:\\project\\sub2api\\tests\\e2e\\setup\\global-teardown.ts",
"globalTimeout": 0,
"grep": {},
"grepInvert": null,
"maxFailures": 0,
"metadata": {
"actualWorkers": 4
},
"preserveOutput": "always",
"projects": [
{
"outputDir": "D:/project/sub2api/tests/test-results",
"repeatEach": 1,
"retries": 0,
"metadata": {
"actualWorkers": 4
},
"id": "chromium",
"name": "chromium",
"testDir": "D:/project/sub2api/tests/e2e",
"testIgnore": [],
"testMatch": [
"**/*.spec.ts"
],
"timeout": 30000
},
{
"outputDir": "D:/project/sub2api/tests/test-results",
"repeatEach": 1,
"retries": 0,
"metadata": {
"actualWorkers": 4
},
"id": "firefox",
"name": "firefox",
"testDir": "D:/project/sub2api/tests/e2e",
"testIgnore": [],
"testMatch": [
"**/*.spec.ts"
],
"timeout": 30000
},
{
"outputDir": "D:/project/sub2api/tests/test-results",
"repeatEach": 1,
"retries": 0,
"metadata": {
"actualWorkers": 4
},
"id": "webkit",
"name": "webkit",
"testDir": "D:/project/sub2api/tests/e2e",
"testIgnore": [],
"testMatch": [
"**/*.spec.ts"
],
"timeout": 30000
},
{
"outputDir": "D:/project/sub2api/tests/test-results",
"repeatEach": 1,
"retries": 0,
"metadata": {
"actualWorkers": 4
},
"id": "Mobile Chrome",
"name": "Mobile Chrome",
"testDir": "D:/project/sub2api/tests/e2e",
"testIgnore": [],
"testMatch": [
"**/*.spec.ts"
],
"timeout": 30000
},
{
"outputDir": "D:/project/sub2api/tests/test-results",
"repeatEach": 1,
"retries": 0,
"metadata": {
"actualWorkers": 4
},
"id": "Mobile Safari",
"name": "Mobile Safari",
"testDir": "D:/project/sub2api/tests/e2e",
"testIgnore": [],
"testMatch": [
"**/*.spec.ts"
],
"timeout": 30000
},
{
"outputDir": "D:/project/sub2api/tests/test-results",
"repeatEach": 1,
"retries": 0,
"metadata": {
"actualWorkers": 4
},
"id": "iPad ( Retina)",
"name": "iPad ( Retina)",
"testDir": "D:/project/sub2api/tests/e2e",
"testIgnore": [],
"testMatch": [
"**/*.spec.ts"
],
"timeout": 30000
}
],
"quiet": false,
"reporter": [
[
"html",
{
"outputFolder": "playwright-report"
}
],
[
"json",
{
"outputFile": "test-results/results.json"
}
],
[
"list",
null
]
],
"reportSlowTests": {
"max": 5,
"threshold": 300000
},
"runAgents": "none",
"shard": null,
"tags": [],
"updateSnapshots": "missing",
"updateSourceMethod": "patch",
"version": "1.58.2",
"workers": 8,
"webServer": {
"command": "echo \"Backend should be running at localhost:8080\"",
"port": 8080,
"reuseExistingServer": true,
"timeout": 120000
}
},
"suites": [
{
"title": "admin-accounts.spec.ts",
"file": "admin-accounts.spec.ts",
"column": 0,
"line": 0,
"specs": [],
"suites": [
{
"title": "Account Management Module",
"file": "admin-accounts.spec.ts",
"line": 11,
"column": 6,
"specs": [
{
"title": "account management page loads",
"ok": false,
"tags": [],
"tests": [
{
"timeout": 30000,
"annotations": [],
"expectedStatus": "passed",
"projectId": "chromium",
"projectName": "chromium",
"results": [
{
"workerIndex": 0,
"parallelIndex": 0,
"status": "failed",
"duration": 11300,
"error": {
"message": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================",
"stack": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================\n at D:\\project\\sub2api\\tests\\e2e\\admin-accounts.spec.ts:19:16",
"location": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-accounts.spec.ts",
"column": 16,
"line": 19
},
"snippet": "\u001b[0m \u001b[90m 17 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mfill(\u001b[32m'input[type=\"password\"]'\u001b[39m\u001b[33m,\u001b[39m \u001b[33mTEST_PASSWORD\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 18 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mclick(\u001b[32m'button[type=\"submit\"]'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 19 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mwaitForURL(\u001b[35m/\\/dashboard/\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m10000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 20 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 21 |\u001b[39m\n \u001b[90m 22 |\u001b[39m test(\u001b[32m'account management page loads'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\u001b[0m"
},
"errors": [
{
"location": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-accounts.spec.ts",
"column": 16,
"line": 19
},
"message": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================\n\n 17 | await page.fill('input[type=\"password\"]', TEST_PASSWORD);\n 18 | await page.click('button[type=\"submit\"]');\n> 19 | await page.waitForURL(/\\/dashboard/, { timeout: 10000 });\n | ^\n 20 | });\n 21 |\n 22 | test('account management page loads', async ({ page }) => {\n at D:\\project\\sub2api\\tests\\e2e\\admin-accounts.spec.ts:19:16"
}
],
"stdout": [],
"stderr": [],
"retry": 0,
"startTime": "2026-03-25T05:08:18.875Z",
"annotations": [],
"attachments": [
{
"name": "screenshot",
"contentType": "image/png",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-accounts-Account-Man-23f22-count-management-page-loads-chromium\\test-failed-1.png"
},
{
"name": "video",
"contentType": "video/webm",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-accounts-Account-Man-23f22-count-management-page-loads-chromium\\video.webm"
},
{
"name": "error-context",
"contentType": "text/markdown",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-accounts-Account-Man-23f22-count-management-page-loads-chromium\\error-context.md"
}
],
"errorLocation": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-accounts.spec.ts",
"column": 16,
"line": 19
}
}
],
"status": "unexpected"
}
],
"id": "965438e98c0706714125-4306e88014eee394c80c",
"file": "admin-accounts.spec.ts",
"line": 22,
"column": 7
},
{
"title": "account management content exists",
"ok": false,
"tags": [],
"tests": [
{
"timeout": 30000,
"annotations": [],
"expectedStatus": "passed",
"projectId": "chromium",
"projectName": "chromium",
"results": [
{
"workerIndex": 1,
"parallelIndex": 1,
"status": "failed",
"duration": 11107,
"error": {
"message": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================",
"stack": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================\n at D:\\project\\sub2api\\tests\\e2e\\admin-accounts.spec.ts:19:16",
"location": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-accounts.spec.ts",
"column": 16,
"line": 19
},
"snippet": "\u001b[0m \u001b[90m 17 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mfill(\u001b[32m'input[type=\"password\"]'\u001b[39m\u001b[33m,\u001b[39m \u001b[33mTEST_PASSWORD\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 18 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mclick(\u001b[32m'button[type=\"submit\"]'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 19 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mwaitForURL(\u001b[35m/\\/dashboard/\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m10000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 20 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 21 |\u001b[39m\n \u001b[90m 22 |\u001b[39m test(\u001b[32m'account management page loads'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\u001b[0m"
},
"errors": [
{
"location": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-accounts.spec.ts",
"column": 16,
"line": 19
},
"message": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================\n\n 17 | await page.fill('input[type=\"password\"]', TEST_PASSWORD);\n 18 | await page.click('button[type=\"submit\"]');\n> 19 | await page.waitForURL(/\\/dashboard/, { timeout: 10000 });\n | ^\n 20 | });\n 21 |\n 22 | test('account management page loads', async ({ page }) => {\n at D:\\project\\sub2api\\tests\\e2e\\admin-accounts.spec.ts:19:16"
}
],
"stdout": [],
"stderr": [],
"retry": 0,
"startTime": "2026-03-25T05:08:18.541Z",
"annotations": [],
"attachments": [
{
"name": "screenshot",
"contentType": "image/png",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-accounts-Account-Man-7f8e7-t-management-content-exists-chromium\\test-failed-1.png"
},
{
"name": "video",
"contentType": "video/webm",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-accounts-Account-Man-7f8e7-t-management-content-exists-chromium\\video.webm"
},
{
"name": "error-context",
"contentType": "text/markdown",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-accounts-Account-Man-7f8e7-t-management-content-exists-chromium\\error-context.md"
}
],
"errorLocation": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-accounts.spec.ts",
"column": 16,
"line": 19
}
}
],
"status": "unexpected"
}
],
"id": "965438e98c0706714125-c3f9dfb0b90cea4425ec",
"file": "admin-accounts.spec.ts",
"line": 27,
"column": 7
}
]
}
]
},
{
"title": "admin-groups.spec.ts",
"file": "admin-groups.spec.ts",
"column": 0,
"line": 0,
"specs": [],
"suites": [
{
"title": "Group Management Module",
"file": "admin-groups.spec.ts",
"line": 11,
"column": 6,
"specs": [
{
"title": "group management page loads",
"ok": false,
"tags": [],
"tests": [
{
"timeout": 30000,
"annotations": [],
"expectedStatus": "passed",
"projectId": "chromium",
"projectName": "chromium",
"results": [
{
"workerIndex": 2,
"parallelIndex": 2,
"status": "failed",
"duration": 11231,
"error": {
"message": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================",
"stack": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================\n at D:\\project\\sub2api\\tests\\e2e\\admin-groups.spec.ts:19:16",
"location": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-groups.spec.ts",
"column": 16,
"line": 19
},
"snippet": "\u001b[0m \u001b[90m 17 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mfill(\u001b[32m'input[type=\"password\"]'\u001b[39m\u001b[33m,\u001b[39m \u001b[33mTEST_PASSWORD\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 18 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mclick(\u001b[32m'button[type=\"submit\"]'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 19 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mwaitForURL(\u001b[35m/\\/dashboard/\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m10000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 20 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 21 |\u001b[39m\n \u001b[90m 22 |\u001b[39m test(\u001b[32m'group management page loads'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\u001b[0m"
},
"errors": [
{
"location": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-groups.spec.ts",
"column": 16,
"line": 19
},
"message": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================\n\n 17 | await page.fill('input[type=\"password\"]', TEST_PASSWORD);\n 18 | await page.click('button[type=\"submit\"]');\n> 19 | await page.waitForURL(/\\/dashboard/, { timeout: 10000 });\n | ^\n 20 | });\n 21 |\n 22 | test('group management page loads', async ({ page }) => {\n at D:\\project\\sub2api\\tests\\e2e\\admin-groups.spec.ts:19:16"
}
],
"stdout": [],
"stderr": [],
"retry": 0,
"startTime": "2026-03-25T05:08:18.684Z",
"annotations": [],
"attachments": [
{
"name": "screenshot",
"contentType": "image/png",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-groups-Group-Managem-c37cf-group-management-page-loads-chromium\\test-failed-1.png"
},
{
"name": "video",
"contentType": "video/webm",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-groups-Group-Managem-c37cf-group-management-page-loads-chromium\\video.webm"
},
{
"name": "error-context",
"contentType": "text/markdown",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-groups-Group-Managem-c37cf-group-management-page-loads-chromium\\error-context.md"
}
],
"errorLocation": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-groups.spec.ts",
"column": 16,
"line": 19
}
}
],
"status": "unexpected"
}
],
"id": "81b37c7d0352bf5497af-a765db4cae0e2eb63109",
"file": "admin-groups.spec.ts",
"line": 22,
"column": 7
},
{
"title": "group management content exists",
"ok": false,
"tags": [],
"tests": [
{
"timeout": 30000,
"annotations": [],
"expectedStatus": "passed",
"projectId": "chromium",
"projectName": "chromium",
"results": [
{
"workerIndex": 3,
"parallelIndex": 3,
"status": "failed",
"duration": 11125,
"error": {
"message": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================",
"stack": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================\n at D:\\project\\sub2api\\tests\\e2e\\admin-groups.spec.ts:19:16",
"location": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-groups.spec.ts",
"column": 16,
"line": 19
},
"snippet": "\u001b[0m \u001b[90m 17 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mfill(\u001b[32m'input[type=\"password\"]'\u001b[39m\u001b[33m,\u001b[39m \u001b[33mTEST_PASSWORD\u001b[39m)\u001b[33m;\u001b[39m\n \u001b[90m 18 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mclick(\u001b[32m'button[type=\"submit\"]'\u001b[39m)\u001b[33m;\u001b[39m\n\u001b[31m\u001b[1m>\u001b[22m\u001b[39m\u001b[90m 19 |\u001b[39m \u001b[36mawait\u001b[39m page\u001b[33m.\u001b[39mwaitForURL(\u001b[35m/\\/dashboard/\u001b[39m\u001b[33m,\u001b[39m { timeout\u001b[33m:\u001b[39m \u001b[35m10000\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m |\u001b[39m \u001b[31m\u001b[1m^\u001b[22m\u001b[39m\n \u001b[90m 20 |\u001b[39m })\u001b[33m;\u001b[39m\n \u001b[90m 21 |\u001b[39m\n \u001b[90m 22 |\u001b[39m test(\u001b[32m'group management page loads'\u001b[39m\u001b[33m,\u001b[39m \u001b[36masync\u001b[39m ({ page }) \u001b[33m=>\u001b[39m {\u001b[0m"
},
"errors": [
{
"location": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-groups.spec.ts",
"column": 16,
"line": 19
},
"message": "TimeoutError: page.waitForURL: Timeout 10000ms exceeded.\n=========================== logs ===========================\nwaiting for navigation until \"load\"\n============================================================\n\n 17 | await page.fill('input[type=\"password\"]', TEST_PASSWORD);\n 18 | await page.click('button[type=\"submit\"]');\n> 19 | await page.waitForURL(/\\/dashboard/, { timeout: 10000 });\n | ^\n 20 | });\n 21 |\n 22 | test('group management page loads', async ({ page }) => {\n at D:\\project\\sub2api\\tests\\e2e\\admin-groups.spec.ts:19:16"
}
],
"stdout": [],
"stderr": [],
"retry": 0,
"startTime": "2026-03-25T05:08:18.671Z",
"annotations": [],
"attachments": [
{
"name": "screenshot",
"contentType": "image/png",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-groups-Group-Managem-5817d-p-management-content-exists-chromium\\test-failed-1.png"
},
{
"name": "video",
"contentType": "video/webm",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-groups-Group-Managem-5817d-p-management-content-exists-chromium\\video.webm"
},
{
"name": "error-context",
"contentType": "text/markdown",
"path": "D:\\project\\sub2api\\tests\\test-results\\admin-groups-Group-Managem-5817d-p-management-content-exists-chromium\\error-context.md"
}
],
"errorLocation": {
"file": "D:\\project\\sub2api\\tests\\e2e\\admin-groups.spec.ts",
"column": 16,
"line": 19
}
}
],
"status": "unexpected"
}
],
"id": "81b37c7d0352bf5497af-0ba9e02a8501c5f025f7",
"file": "admin-groups.spec.ts",
"line": 27,
"column": 7
}
]
}
]
}
],
"errors": [],
"stats": {
"startTime": "2026-03-25T05:07:56.931Z",
"duration": 34017.024000000005,
"expected": 0,
"skipped": 0,
"unexpected": 4,
"flaky": 0
}
}