@se-studio/site-check 2.1.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +11 -1
- package/dist/smoke-test/cache-log-audit.d.ts +22 -0
- package/dist/smoke-test/cache-log-audit.d.ts.map +1 -0
- package/dist/smoke-test/cache-log-audit.js +85 -0
- package/dist/smoke-test/cache-log-audit.js.map +1 -0
- package/dist/smoke-test/index.d.ts +2 -0
- package/dist/smoke-test/index.d.ts.map +1 -1
- package/dist/smoke-test/index.js +1 -0
- package/dist/smoke-test/index.js.map +1 -1
- package/dist/smoke-test/runner.d.ts.map +1 -1
- package/dist/smoke-test/runner.js +11 -2
- package/dist/smoke-test/runner.js.map +1 -1
- package/package.json +1 -1
- package/smoke-test-one.mjs +177 -55
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.1.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Add cache log audit: `SMOKE_TEST_AUDIT_CACHE_LOGS=true` captures server/build stdout and scans for 2MB Data Cache failures, Next `cache skip` lines, and unexpected `hard refresh` during smoke runs.
|
|
8
|
+
- Export `auditCacheLogs`, `formatCacheLogAuditReport`, and `getCacheLogAuditExitCode` from `@se-studio/site-check/smoke-test`.
|
|
9
|
+
- Smoke runner uses explicit `cache: 'default'` fetch (no `Cache-Control: no-cache`).
|
|
10
|
+
- `LOG_CMS_FETCH=1` is set when audit or cache verify is enabled.
|
|
11
|
+
|
|
12
|
+
## 2.1.1
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Fix `smoke-test-one` appearing to hang: add fetch timeouts, startup/progress logging, fail fast when port is busy but not responding, reuse an already-healthy dev server (`SMOKE_TEST_USE_RUNNING_SERVER`, default true), and inherit stdio so dev server output is visible.
|
|
17
|
+
|
|
3
18
|
## 2.1.0
|
|
4
19
|
|
|
5
20
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -112,7 +112,17 @@ pnpm smoke-test # dev server + smoke (default dev:de
|
|
|
112
112
|
|
|
113
113
|
Add `smoke.cases.json` and `scripts/smoke-test-run.ts`. No Contentful or `cms-server` imports required. Set `SMOKE_TEST_IGNORE=true` in `.env.local` to skip the full `smoke-test` CI script.
|
|
114
114
|
|
|
115
|
-
**`smoke-test-one` env:**
|
|
115
|
+
**`smoke-test-one` env:**
|
|
116
|
+
|
|
117
|
+
| Variable | Purpose |
|
|
118
|
+
|----------|---------|
|
|
119
|
+
| `SMOKE_TEST_SERVER_SCRIPT=dev:dev` | Default dev server; use `start` for prod-like server (runs `pnpm build` first) |
|
|
120
|
+
| `SMOKE_TEST_VERIFY_CACHE=true` | Run smoke twice; assert `x-nextjs-cache` on HTML (meaningful with `start`, soft in `next dev`) |
|
|
121
|
+
| `SMOKE_TEST_AUDIT_CACHE_LOGS=true` | Pipe server/build logs and scan for 2MB cache failures, `cache skip`, and `hard refresh` |
|
|
122
|
+
| `SMOKE_TEST_CACHE_SKIP_SEVERITY=warn` | `warn` or `error` for cache-skip log lines (default `warn`) |
|
|
123
|
+
| `SMOKE_TEST_READY_PATH=/` | Path polled until the server responds |
|
|
124
|
+
|
|
125
|
+
`LOG_CMS_FETCH=1` is set when verify-cache or audit-cache-logs is enabled. The smoke HTTP client never sends `Cache-Control: no-cache`.
|
|
116
126
|
|
|
117
127
|
## Exit codes
|
|
118
128
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** biome-ignore-all lint/suspicious/noConsole: CLI output is intentional */
|
|
2
|
+
export type CacheLogAuditSeverity = 'error' | 'warn';
|
|
3
|
+
export interface CacheLogAuditMatch {
|
|
4
|
+
severity: CacheLogAuditSeverity;
|
|
5
|
+
rule: string;
|
|
6
|
+
line: string;
|
|
7
|
+
lineNumber: number;
|
|
8
|
+
}
|
|
9
|
+
export interface CacheLogAuditOptions {
|
|
10
|
+
/** Severity for Next.js `cache skip` / `Cache skipped reason` lines. Default `warn`. */
|
|
11
|
+
cacheSkipSeverity?: CacheLogAuditSeverity;
|
|
12
|
+
}
|
|
13
|
+
export interface CacheLogAuditResult {
|
|
14
|
+
errors: CacheLogAuditMatch[];
|
|
15
|
+
warnings: CacheLogAuditMatch[];
|
|
16
|
+
errorCount: number;
|
|
17
|
+
warnCount: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function auditCacheLogs(logText: string, options?: CacheLogAuditOptions): CacheLogAuditResult;
|
|
20
|
+
export declare function getCacheLogAuditExitCode(result: CacheLogAuditResult): number;
|
|
21
|
+
export declare function formatCacheLogAuditReport(result: CacheLogAuditResult): string;
|
|
22
|
+
//# sourceMappingURL=cache-log-audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-log-audit.d.ts","sourceRoot":"","sources":["../../src/smoke-test/cache-log-audit.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,wFAAwF;IACxF,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAcD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,oBAAoB,GAC7B,mBAAmB,CAkDrB;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAE5E;AAWD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAa7E"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/** biome-ignore-all lint/suspicious/noConsole: CLI output is intentional */
|
|
2
|
+
const RULE_DATA_CACHE_2MB = 'data-cache-2mb';
|
|
3
|
+
const RULE_CACHE_SKIP = 'cache-skip';
|
|
4
|
+
const RULE_HARD_REFRESH = 'hard-refresh';
|
|
5
|
+
const PATTERN_DATA_CACHE_2MB = /Failed to set Next\.js data cache|over 2MB can not be cached/i;
|
|
6
|
+
const PATTERN_CACHE_SKIP = /cache skip|Cache skipped reason/i;
|
|
7
|
+
const PATTERN_HARD_REFRESH = /hard refresh/i;
|
|
8
|
+
function resolveCacheSkipSeverity(options) {
|
|
9
|
+
return options?.cacheSkipSeverity ?? 'warn';
|
|
10
|
+
}
|
|
11
|
+
export function auditCacheLogs(logText, options) {
|
|
12
|
+
const cacheSkipSeverity = resolveCacheSkipSeverity(options);
|
|
13
|
+
const errors = [];
|
|
14
|
+
const warnings = [];
|
|
15
|
+
const lines = logText.split('\n');
|
|
16
|
+
for (let index = 0; index < lines.length; index++) {
|
|
17
|
+
const line = lines[index] ?? '';
|
|
18
|
+
const trimmed = line.trim();
|
|
19
|
+
if (!trimmed)
|
|
20
|
+
continue;
|
|
21
|
+
const lineNumber = index + 1;
|
|
22
|
+
if (PATTERN_DATA_CACHE_2MB.test(trimmed)) {
|
|
23
|
+
errors.push({
|
|
24
|
+
severity: 'error',
|
|
25
|
+
rule: RULE_DATA_CACHE_2MB,
|
|
26
|
+
line: trimmed,
|
|
27
|
+
lineNumber,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (PATTERN_HARD_REFRESH.test(trimmed)) {
|
|
31
|
+
errors.push({
|
|
32
|
+
severity: 'error',
|
|
33
|
+
rule: RULE_HARD_REFRESH,
|
|
34
|
+
line: trimmed,
|
|
35
|
+
lineNumber,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else if (PATTERN_CACHE_SKIP.test(trimmed)) {
|
|
39
|
+
const match = {
|
|
40
|
+
severity: cacheSkipSeverity,
|
|
41
|
+
rule: RULE_CACHE_SKIP,
|
|
42
|
+
line: trimmed,
|
|
43
|
+
lineNumber,
|
|
44
|
+
};
|
|
45
|
+
if (cacheSkipSeverity === 'error') {
|
|
46
|
+
errors.push(match);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
warnings.push(match);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
errors,
|
|
55
|
+
warnings,
|
|
56
|
+
errorCount: errors.length,
|
|
57
|
+
warnCount: warnings.length,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export function getCacheLogAuditExitCode(result) {
|
|
61
|
+
return result.errorCount > 0 ? 1 : 0;
|
|
62
|
+
}
|
|
63
|
+
function formatMatches(label, matches) {
|
|
64
|
+
if (matches.length === 0)
|
|
65
|
+
return [];
|
|
66
|
+
const lines = [` ${label}:`];
|
|
67
|
+
for (const match of matches) {
|
|
68
|
+
lines.push(` - [${match.rule}] line ${match.lineNumber}: ${match.line}`);
|
|
69
|
+
}
|
|
70
|
+
return lines;
|
|
71
|
+
}
|
|
72
|
+
export function formatCacheLogAuditReport(result) {
|
|
73
|
+
const lines = [];
|
|
74
|
+
lines.push('## cache-log-audit');
|
|
75
|
+
lines.push(` errors: ${result.errorCount}, warnings: ${result.warnCount}`);
|
|
76
|
+
if (result.errorCount === 0 && result.warnCount === 0) {
|
|
77
|
+
lines.push(' cache log audit: ok');
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
lines.push(...formatMatches('errors', result.errors));
|
|
81
|
+
lines.push(...formatMatches('warnings', result.warnings));
|
|
82
|
+
}
|
|
83
|
+
return lines.join('\n');
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=cache-log-audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-log-audit.js","sourceRoot":"","sources":["../../src/smoke-test/cache-log-audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export type { CacheLogAuditMatch, CacheLogAuditOptions, CacheLogAuditResult, CacheLogAuditSeverity, } from './cache-log-audit.js';
|
|
2
|
+
export { auditCacheLogs, formatCacheLogAuditReport, getCacheLogAuditExitCode, } from './cache-log-audit.js';
|
|
1
3
|
export { formatSmokeTestReport, getSmokeTestExitCode, isSmokeTestCacheVerifyResult, parseNextJsCacheHeader, runSmokeTest, runSmokeTestWithCacheVerify, } from './runner.js';
|
|
2
4
|
export { joinSmokeBaseUrl, loadStaticSmokeConfig, runStaticSmokeTest } from './static.js';
|
|
3
5
|
export type { LoadStaticSmokeConfigOptions, NextJsCacheStatus, RunStaticSmokeTestOptions, SmokeFailureReason, SmokeTestCacheVerifyResult, SmokeTestCase, SmokeTestCaseResult, SmokeTestCategory, SmokeTestResult, SmokeTestRunnerConfig, StaticSmokeCaseDefinition, StaticSmokeConfigFile, } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/smoke-test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,YAAY,EACZ,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC1F,YAAY,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/smoke-test/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,YAAY,EACZ,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC1F,YAAY,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
package/dist/smoke-test/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { auditCacheLogs, formatCacheLogAuditReport, getCacheLogAuditExitCode, } from './cache-log-audit.js';
|
|
1
2
|
export { formatSmokeTestReport, getSmokeTestExitCode, isSmokeTestCacheVerifyResult, parseNextJsCacheHeader, runSmokeTest, runSmokeTestWithCacheVerify, } from './runner.js';
|
|
2
3
|
export { joinSmokeBaseUrl, loadStaticSmokeConfig, runStaticSmokeTest } from './static.js';
|
|
3
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/smoke-test/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/smoke-test/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,YAAY,EACZ,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/smoke-test/runner.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAG5E,OAAO,KAAK,EACV,iBAAiB,EAEjB,0BAA0B,EAG1B,eAAe,EACf,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAapB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB,GAAG,IAAI,CAOrF;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/smoke-test/runner.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAG5E,OAAO,KAAK,EACV,iBAAiB,EAEjB,0BAA0B,EAG1B,eAAe,EACf,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAapB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,iBAAiB,GAAG,IAAI,CAOrF;AAgGD,wBAAsB,YAAY,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAqC1F;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,0BAA0B,CAAC,CA2DrC;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,eAAe,GAAG,0BAA0B,GACnD,MAAM,IAAI,0BAA0B,CAEtC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,0BAA0B,GAAG,MAAM,CAQjG;AAuFD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,GAAG,0BAA0B,GACnD,MAAM,CAiBR"}
|
|
@@ -47,7 +47,12 @@ async function checkCase(testCase, minMarkdownLength, fetchFn) {
|
|
|
47
47
|
let htmlNextCache = null;
|
|
48
48
|
let markdownNextCache = null;
|
|
49
49
|
try {
|
|
50
|
-
|
|
50
|
+
// Smoke client uses plain GET — never send Cache-Control: no-cache (would mimic browser hard refresh).
|
|
51
|
+
const htmlRes = await fetchFn(testCase.pageUrl, {
|
|
52
|
+
method: 'GET',
|
|
53
|
+
redirect: 'follow',
|
|
54
|
+
cache: 'default',
|
|
55
|
+
});
|
|
51
56
|
htmlStatus = htmlRes.status;
|
|
52
57
|
htmlNextCache = parseNextJsCacheHeader(htmlRes.headers.get('x-nextjs-cache'));
|
|
53
58
|
if (htmlStatus < 200 || htmlStatus >= 300) {
|
|
@@ -61,7 +66,11 @@ async function checkCase(testCase, minMarkdownLength, fetchFn) {
|
|
|
61
66
|
if (testCase.expectMarkdown) {
|
|
62
67
|
const mdUrl = htmlUrlToMarkdownUrl(testCase.pageUrl);
|
|
63
68
|
try {
|
|
64
|
-
const mdRes = await fetchFn(mdUrl, {
|
|
69
|
+
const mdRes = await fetchFn(mdUrl, {
|
|
70
|
+
method: 'GET',
|
|
71
|
+
redirect: 'follow',
|
|
72
|
+
cache: 'default',
|
|
73
|
+
});
|
|
65
74
|
markdownStatus = mdRes.status;
|
|
66
75
|
markdownContentType = mdRes.headers.get('content-type');
|
|
67
76
|
markdownNextCache = parseNextJsCacheHeader(mdRes.headers.get('x-nextjs-cache'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/smoke-test/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/smoke-test/runner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/smoke-test-one.mjs
CHANGED
|
@@ -5,17 +5,24 @@
|
|
|
5
5
|
* Usage: smoke-test-one <port> (from app directory)
|
|
6
6
|
*
|
|
7
7
|
* Env:
|
|
8
|
-
* SMOKE_TEST_IGNORE=true
|
|
9
|
-
* SMOKE_TEST_SERVER_SCRIPT=dev:dev
|
|
10
|
-
* SMOKE_TEST_VERIFY_CACHE=true
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* SMOKE_TEST_IGNORE=true — skip entirely
|
|
9
|
+
* SMOKE_TEST_SERVER_SCRIPT=dev:dev — pnpm script to start server (default dev:dev; use "start" for prod)
|
|
10
|
+
* SMOKE_TEST_VERIFY_CACHE=true — run smoke twice and assert cache headers / timing
|
|
11
|
+
* SMOKE_TEST_AUDIT_CACHE_LOGS=true — capture server/build logs and scan for cache problems
|
|
12
|
+
* SMOKE_TEST_CACHE_SKIP_SEVERITY=warn — cache-skip log severity: warn | error (default warn)
|
|
13
|
+
* SMOKE_TEST_READY_PATH=/ — path polled until server responds
|
|
14
|
+
* SMOKE_TEST_USE_RUNNING_SERVER=true — reuse server already on port (default true)
|
|
15
|
+
* LOG_CMS_FETCH=1 — set when VERIFY_CACHE or AUDIT_CACHE_LOGS is true
|
|
13
16
|
*/
|
|
14
17
|
|
|
18
|
+
import net from 'node:net';
|
|
15
19
|
import fs from 'node:fs';
|
|
16
20
|
import path from 'node:path';
|
|
21
|
+
import { fileURLToPath } from 'node:url';
|
|
17
22
|
import { spawn, spawnSync } from 'node:child_process';
|
|
18
23
|
|
|
24
|
+
const packageDir = path.dirname(fileURLToPath(import.meta.url));
|
|
25
|
+
|
|
19
26
|
const port = process.argv[2];
|
|
20
27
|
if (!port || !/^\d+$/.test(port)) {
|
|
21
28
|
console.error('Usage: smoke-test-one <port>');
|
|
@@ -25,6 +32,15 @@ if (!port || !/^\d+$/.test(port)) {
|
|
|
25
32
|
const appDir = process.cwd();
|
|
26
33
|
const baseUrl = `http://localhost:${port}`;
|
|
27
34
|
const pollIntervalMs = 1_000;
|
|
35
|
+
const progressIntervalMs = 10_000;
|
|
36
|
+
const fetchTimeoutMs = 10_000;
|
|
37
|
+
|
|
38
|
+
function fetchWithTimeout(url, options = {}) {
|
|
39
|
+
return fetch(url, {
|
|
40
|
+
...options,
|
|
41
|
+
signal: AbortSignal.timeout(fetchTimeoutMs),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
28
44
|
|
|
29
45
|
function parseEnvFile(filePath) {
|
|
30
46
|
const env = {};
|
|
@@ -49,20 +65,70 @@ function loadEnv() {
|
|
|
49
65
|
return { ...process.env, ...envLocal, PORT: port };
|
|
50
66
|
}
|
|
51
67
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
68
|
+
function sleep(ms) {
|
|
69
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async function isServerUp(url) {
|
|
73
|
+
try {
|
|
74
|
+
const res = await fetchWithTimeout(url, { method: 'GET', redirect: 'follow' });
|
|
75
|
+
return res.status >= 200 && res.status < 500;
|
|
76
|
+
} catch {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function isPortListening(listenPort) {
|
|
82
|
+
return new Promise((resolve) => {
|
|
83
|
+
const socket = net.connect(Number(listenPort), '127.0.0.1');
|
|
84
|
+
socket.setTimeout(2_000);
|
|
85
|
+
socket.once('connect', () => {
|
|
86
|
+
socket.destroy();
|
|
87
|
+
resolve(true);
|
|
88
|
+
});
|
|
89
|
+
socket.once('timeout', () => {
|
|
90
|
+
socket.destroy();
|
|
91
|
+
resolve(false);
|
|
92
|
+
});
|
|
93
|
+
socket.once('error', () => resolve(false));
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async function waitForServer(url, timeoutMs, options = {}) {
|
|
98
|
+
const { child, label = 'Server' } = options;
|
|
99
|
+
const started = Date.now();
|
|
100
|
+
let lastProgressAt = 0;
|
|
101
|
+
let childExited = false;
|
|
102
|
+
let childExitCode = null;
|
|
103
|
+
|
|
104
|
+
if (child) {
|
|
105
|
+
child.on('exit', (code) => {
|
|
106
|
+
childExited = true;
|
|
107
|
+
childExitCode = code;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
while (Date.now() - started < timeoutMs) {
|
|
112
|
+
if (childExited) {
|
|
113
|
+
throw new Error(
|
|
114
|
+
`${label} process exited with code ${childExitCode ?? 'unknown'} before ${url} was ready`,
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (await isServerUp(url)) {
|
|
119
|
+
return Date.now() - started;
|
|
62
120
|
}
|
|
63
|
-
|
|
121
|
+
|
|
122
|
+
const elapsed = Date.now() - started;
|
|
123
|
+
if (elapsed - lastProgressAt >= progressIntervalMs) {
|
|
124
|
+
console.log(`Still waiting for ${url} (${Math.round(elapsed / 1000)}s)...`);
|
|
125
|
+
lastProgressAt = elapsed;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
await sleep(pollIntervalMs);
|
|
64
129
|
}
|
|
65
|
-
|
|
130
|
+
|
|
131
|
+
throw new Error(`${label} did not respond at ${url} within ${timeoutMs}ms`);
|
|
66
132
|
}
|
|
67
133
|
|
|
68
134
|
function killProcessTree(child) {
|
|
@@ -78,19 +144,20 @@ function killProcessTree(child) {
|
|
|
78
144
|
}
|
|
79
145
|
}
|
|
80
146
|
|
|
81
|
-
function
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
147
|
+
function appendTeeLog(buffer, chunk, stream) {
|
|
148
|
+
const text = typeof chunk === 'string' ? chunk : chunk.toString();
|
|
149
|
+
buffer.text += text;
|
|
150
|
+
stream.write(text);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function attachTeeHandlers(child, buffer) {
|
|
154
|
+
child.stdout?.on('data', (chunk) => appendTeeLog(buffer, chunk, process.stdout));
|
|
155
|
+
child.stderr?.on('data', (chunk) => appendTeeLog(buffer, chunk, process.stderr));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
async function loadCacheLogAudit() {
|
|
159
|
+
const modulePath = path.join(packageDir, 'dist/smoke-test/cache-log-audit.js');
|
|
160
|
+
return import(modulePath);
|
|
94
161
|
}
|
|
95
162
|
|
|
96
163
|
const env = loadEnv();
|
|
@@ -102,53 +169,93 @@ if ((env.SMOKE_TEST_IGNORE ?? '').toLowerCase() === 'true') {
|
|
|
102
169
|
|
|
103
170
|
const serverScript = env.SMOKE_TEST_SERVER_SCRIPT ?? 'dev:dev';
|
|
104
171
|
const verifyCache = (env.SMOKE_TEST_VERIFY_CACHE ?? '').toLowerCase() === 'true';
|
|
172
|
+
const auditCacheLogsEnabled = (env.SMOKE_TEST_AUDIT_CACHE_LOGS ?? '').toLowerCase() === 'true';
|
|
173
|
+
const cacheSkipSeverity =
|
|
174
|
+
(env.SMOKE_TEST_CACHE_SKIP_SEVERITY ?? 'warn').toLowerCase() === 'error' ? 'error' : 'warn';
|
|
175
|
+
const useRunningServer = (env.SMOKE_TEST_USE_RUNNING_SERVER ?? 'true').toLowerCase() !== 'false';
|
|
105
176
|
const readyPath = env.SMOKE_TEST_READY_PATH ?? '/';
|
|
106
177
|
const readyUrl = `${baseUrl}${readyPath.startsWith('/') ? readyPath : `/${readyPath}`}`;
|
|
107
178
|
const isProductionStart = serverScript === 'start';
|
|
108
179
|
const startTimeoutMs = isProductionStart ? 120_000 : 300_000;
|
|
109
180
|
|
|
181
|
+
const logBuffer = { text: '' };
|
|
182
|
+
|
|
110
183
|
if (isProductionStart) {
|
|
111
184
|
console.log('Building app...');
|
|
112
185
|
const buildResult = spawnSync('pnpm', ['build'], {
|
|
113
186
|
cwd: appDir,
|
|
114
|
-
stdio: 'inherit',
|
|
187
|
+
stdio: auditCacheLogsEnabled ? 'pipe' : 'inherit',
|
|
115
188
|
env,
|
|
189
|
+
encoding: auditCacheLogsEnabled ? 'utf8' : undefined,
|
|
116
190
|
});
|
|
191
|
+
if (auditCacheLogsEnabled) {
|
|
192
|
+
logBuffer.text += buildResult.stdout ?? '';
|
|
193
|
+
logBuffer.text += buildResult.stderr ?? '';
|
|
194
|
+
if (buildResult.stdout) process.stdout.write(buildResult.stdout);
|
|
195
|
+
if (buildResult.stderr) process.stderr.write(buildResult.stderr);
|
|
196
|
+
}
|
|
117
197
|
if (buildResult.status !== 0) {
|
|
118
198
|
process.exit(buildResult.status ?? 1);
|
|
119
199
|
}
|
|
120
200
|
}
|
|
121
201
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const logForwarder = createLogForwarder((line) => {
|
|
125
|
-
if (!line.includes('[CMS fetch]')) return;
|
|
126
|
-
cmsFetchCount++;
|
|
127
|
-
});
|
|
128
|
-
|
|
202
|
+
const enableCmsFetchLog = verifyCache || auditCacheLogsEnabled;
|
|
129
203
|
const smokeEnv = {
|
|
130
204
|
...env,
|
|
131
205
|
SMOKE_TEST_PORT: port,
|
|
132
|
-
...(verifyCache ? { SMOKE_TEST_VERIFY_CACHE: 'true'
|
|
206
|
+
...(verifyCache ? { SMOKE_TEST_VERIFY_CACHE: 'true' } : {}),
|
|
207
|
+
...(enableCmsFetchLog ? { LOG_CMS_FETCH: '1' } : {}),
|
|
133
208
|
};
|
|
134
209
|
|
|
135
|
-
console.log(`
|
|
136
|
-
const server = spawn('pnpm', [serverScript], {
|
|
137
|
-
cwd: appDir,
|
|
138
|
-
env: smokeEnv,
|
|
139
|
-
stdio: ['inherit', 'pipe', 'pipe'],
|
|
140
|
-
detached: true,
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
server.stdout?.on('data', logForwarder);
|
|
144
|
-
server.stderr?.on('data', logForwarder);
|
|
210
|
+
console.log(`Smoke test: checking ${readyUrl} (port ${port})...`);
|
|
145
211
|
|
|
212
|
+
let server = null;
|
|
213
|
+
let spawnedServer = false;
|
|
146
214
|
let exitCode = 1;
|
|
147
215
|
|
|
148
216
|
try {
|
|
149
|
-
await
|
|
150
|
-
|
|
217
|
+
const serverUp = await isServerUp(readyUrl);
|
|
218
|
+
const portBusy = await isPortListening(port);
|
|
151
219
|
|
|
220
|
+
if (serverUp && useRunningServer) {
|
|
221
|
+
console.log(`Using existing server at ${readyUrl}.`);
|
|
222
|
+
if (auditCacheLogsEnabled) {
|
|
223
|
+
console.warn(
|
|
224
|
+
'SMOKE_TEST_AUDIT_CACHE_LOGS=true but reusing an existing server — server logs cannot be captured.',
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
} else if (serverUp && !useRunningServer) {
|
|
228
|
+
console.error(
|
|
229
|
+
`Server already running at ${readyUrl}. Stop it first, or set SMOKE_TEST_USE_RUNNING_SERVER=true.`,
|
|
230
|
+
);
|
|
231
|
+
process.exit(1);
|
|
232
|
+
} else if (portBusy) {
|
|
233
|
+
console.error(
|
|
234
|
+
`Port ${port} is in use but ${readyUrl} is not responding. Stop the process on :${port} and retry.`,
|
|
235
|
+
);
|
|
236
|
+
process.exit(1);
|
|
237
|
+
} else {
|
|
238
|
+
console.log(`Starting server (${serverScript}) on ${baseUrl}...`);
|
|
239
|
+
server = spawn('pnpm', [serverScript], {
|
|
240
|
+
cwd: appDir,
|
|
241
|
+
env: smokeEnv,
|
|
242
|
+
stdio: auditCacheLogsEnabled ? ['inherit', 'pipe', 'pipe'] : 'inherit',
|
|
243
|
+
detached: true,
|
|
244
|
+
});
|
|
245
|
+
spawnedServer = true;
|
|
246
|
+
|
|
247
|
+
if (auditCacheLogsEnabled) {
|
|
248
|
+
attachTeeHandlers(server, logBuffer);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
const readyMs = await waitForServer(readyUrl, startTimeoutMs, {
|
|
252
|
+
child: server,
|
|
253
|
+
label: 'Dev server',
|
|
254
|
+
});
|
|
255
|
+
console.log(`Server ready at ${readyUrl} (${Math.round(readyMs / 1000)}s).`);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
console.log('Running smoke tests...');
|
|
152
259
|
const runResult = spawnSync('pnpm', ['smoke-test:run'], {
|
|
153
260
|
cwd: appDir,
|
|
154
261
|
stdio: 'inherit',
|
|
@@ -156,17 +263,32 @@ try {
|
|
|
156
263
|
});
|
|
157
264
|
exitCode = runResult.status ?? 1;
|
|
158
265
|
|
|
266
|
+
if (auditCacheLogsEnabled && spawnedServer) {
|
|
267
|
+
const { auditCacheLogs, formatCacheLogAuditReport, getCacheLogAuditExitCode } =
|
|
268
|
+
await loadCacheLogAudit();
|
|
269
|
+
const auditResult = auditCacheLogs(logBuffer.text, { cacheSkipSeverity });
|
|
270
|
+
console.log('');
|
|
271
|
+
console.log(formatCacheLogAuditReport(auditResult));
|
|
272
|
+
if (getCacheLogAuditExitCode(auditResult) !== 0) {
|
|
273
|
+
exitCode = 1;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
159
277
|
if (verifyCache) {
|
|
160
278
|
console.log('');
|
|
161
|
-
console.log('## CMS fetch
|
|
162
|
-
console.log(
|
|
163
|
-
|
|
279
|
+
console.log('## CMS fetch logging');
|
|
280
|
+
console.log(
|
|
281
|
+
' LOG_CMS_FETCH=1 is set on the dev server — check its terminal for [CMS fetch] lines.',
|
|
282
|
+
);
|
|
283
|
+
console.log(' Pass-level cache stats are in the smoke report (x-nextjs-cache).');
|
|
164
284
|
}
|
|
165
285
|
} catch (error) {
|
|
166
286
|
console.error(error instanceof Error ? error.message : error);
|
|
167
287
|
exitCode = 1;
|
|
168
288
|
} finally {
|
|
169
|
-
|
|
289
|
+
if (spawnedServer) {
|
|
290
|
+
killProcessTree(server);
|
|
291
|
+
}
|
|
170
292
|
}
|
|
171
293
|
|
|
172
294
|
process.exit(exitCode);
|