@se-studio/site-check 2.2.0 → 2.4.0
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 +12 -0
- package/README.md +22 -0
- package/dist/smoke-test/index.d.ts +3 -2
- package/dist/smoke-test/index.d.ts.map +1 -1
- package/dist/smoke-test/index.js +2 -2
- package/dist/smoke-test/index.js.map +1 -1
- package/dist/smoke-test/static.d.ts +6 -0
- package/dist/smoke-test/static.d.ts.map +1 -1
- package/dist/smoke-test/static.js +17 -1
- package/dist/smoke-test/static.js.map +1 -1
- package/dist/vercel-env.d.ts +3 -0
- package/dist/vercel-env.d.ts.map +1 -1
- package/dist/vercel-env.js +17 -0
- package/dist/vercel-env.js.map +1 -1
- package/package.json +7 -3
- package/smoke-test-deploy-check.mjs +66 -0
- package/smoke-test-live.mjs +63 -0
- package/smoke-test-one.mjs +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Add `smoke-test-live` CLI and `runLiveSmokeTest` for HTTP smoke against live deployment URLs (`DEPLOYMENT_URL`). Export `resolveDeploymentBaseUrl` for Vercel `repository_dispatch` / Deployment Checks workflows.
|
|
8
|
+
|
|
9
|
+
## 2.3.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- Add `smoke-test-deploy-check` CLI for post-build Vercel smoke gates (`SMOKE_TEST_SKIP_BUILD` on `smoke-test-one`). Export `resolveSmokePortFromConfig` from the smoke-test module.
|
|
14
|
+
|
|
3
15
|
## 2.2.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -127,13 +127,35 @@ Add `smoke.cases.json`, `scripts/smoke-test-run.ts`, and optionally `scripts/smo
|
|
|
127
127
|
| Variable | Purpose |
|
|
128
128
|
|----------|---------|
|
|
129
129
|
| `SMOKE_TEST_SERVER_SCRIPT=dev:dev` | Default dev server; use `start` for prod-like server (runs `pnpm build` first) |
|
|
130
|
+
| `SMOKE_TEST_SKIP_BUILD=true` | Skip `pnpm build` when `SERVER_SCRIPT=start` (use after Vercel `next build`) |
|
|
130
131
|
| `SMOKE_TEST_VERIFY_CACHE=true` | Run smoke twice; assert `x-nextjs-cache` on HTML (meaningful with `start`, soft in `next dev`) |
|
|
131
132
|
| `SMOKE_TEST_AUDIT_CACHE_LOGS=true` | Pipe server/build logs and scan for 2MB cache failures, `cache skip`, and `hard refresh` |
|
|
132
133
|
| `SMOKE_TEST_CACHE_SKIP_SEVERITY=warn` | `warn` or `error` for cache-skip log lines (default `warn`) |
|
|
133
134
|
| `SMOKE_TEST_READY_PATH=/` | Path polled until the server responds |
|
|
135
|
+
| `SMOKE_TEST_USE_RUNNING_SERVER=false` | Force a fresh server (default `true` for local dev) |
|
|
134
136
|
|
|
135
137
|
`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`.
|
|
136
138
|
|
|
139
|
+
**Deploy check** (`smoke-test-deploy-check`): post-build gate for Vercel — starts `pnpm start` without rebuilding, runs `pnpm smoke-test:run`, exits non-zero on failure. Port defaults from `smoke.cases.json`. Set `SMOKE_TEST_IGNORE=true` in Vercel env to bypass in an emergency.
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"buildCommand": "pnpm build && pnpm smoke-test:deploy-check"
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Per-app script: `"smoke-test:deploy-check": "smoke-test-deploy-check"` (or `node ../../scripts/smoke-test-deploy-check.mjs` in the monorepo).
|
|
148
|
+
|
|
149
|
+
**Live deployment smoke** (`smoke-test-live` / `runLiveSmokeTest`): HTTP checks against a deployed URL — use with Vercel `repository_dispatch` (`vercel.deployment.ready`) and [Deployment Checks](https://vercel.com/docs/deployment-checks) to hold production domain aliasing until smoke passes.
|
|
150
|
+
|
|
151
|
+
| Variable | Purpose |
|
|
152
|
+
|----------|---------|
|
|
153
|
+
| `DEPLOYMENT_URL` | Live deployment base URL (e.g. `github.event.client_payload.url`) |
|
|
154
|
+
| `SMOKE_TEST_BASE_URL` | Alias for `DEPLOYMENT_URL` |
|
|
155
|
+
| `PREVIEW_SITE_URL` | Fallback for local runs (same as preview smoke) |
|
|
156
|
+
|
|
157
|
+
Per-app script: `"smoke-test:live": "smoke-test-live"`. GitHub Actions: set `DEPLOYMENT_URL` from the dispatch payload, report status with `vercel/repository-dispatch/actions/status@v1`, register the check name in Vercel Deployment Checks settings.
|
|
158
|
+
|
|
137
159
|
## Exit codes
|
|
138
160
|
|
|
139
161
|
- `0` — Validation passed (sitemap.xml required; llms.txt and sitemap-unindexed.xml optional). If `--check-rewrites` was set, no unexpected rewrites. Every sitemap page returned 200 for its `.md` URL and files were saved (or in compare mode: all production sitemap pages exist on development and, if `--check-rewrites`, no unexpected rewrites).
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { createProtectedFetch, requirePreviewBaseUrl, requireProtectionBypass, requireSitemapProdUrl, resolvePreviewBaseUrl, resolveProductionSiteUrl, resolveProtectionBypass, resolveSitemapProdUrl, VERCEL_PROTECTION_BYPASS_HEADER, } from '../vercel-env.js';
|
|
1
|
+
export { createProtectedFetch, requireDeploymentBaseUrl, requirePreviewBaseUrl, requireProtectionBypass, requireSitemapProdUrl, resolveDeploymentBaseUrl, resolvePreviewBaseUrl, resolveProductionSiteUrl, resolveProtectionBypass, resolveSitemapProdUrl, VERCEL_PROTECTION_BYPASS_HEADER, } from '../vercel-env.js';
|
|
2
2
|
export type { CacheLogAuditMatch, CacheLogAuditOptions, CacheLogAuditResult, CacheLogAuditSeverity, } from './cache-log-audit.js';
|
|
3
3
|
export { auditCacheLogs, formatCacheLogAuditReport, getCacheLogAuditExitCode, } from './cache-log-audit.js';
|
|
4
4
|
export { formatSmokeTestReport, getSmokeTestExitCode, isSmokeTestCacheVerifyResult, parseNextJsCacheHeader, runSmokeTest, runSmokeTestWithCacheVerify, } from './runner.js';
|
|
5
|
-
export {
|
|
5
|
+
export type { RunLiveSmokeTestOptions } from './static.js';
|
|
6
|
+
export { joinSmokeBaseUrl, loadStaticSmokeConfig, resolveSmokePortFromConfig, runLiveSmokeTest, runPreviewStaticSmokeTest, runStaticSmokeTest, } from './static.js';
|
|
6
7
|
export type { LoadStaticSmokeConfigOptions, NextJsCacheStatus, RunPreviewStaticSmokeTestOptions, RunStaticSmokeTestOptions, SmokeFailureReason, SmokeTestCacheVerifyResult, SmokeTestCase, SmokeTestCaseResult, SmokeTestCategory, SmokeTestResult, SmokeTestRunnerConfig, StaticSmokeCaseDefinition, StaticSmokeConfigFile, } from './types.js';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/smoke-test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,GAChC,MAAM,kBAAkB,CAAC;AAC1B,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,EACL,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,gCAAgC,EAChC,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,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,GAChC,MAAM,kBAAkB,CAAC;AAC1B,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,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,gCAAgC,EAChC,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,5 +1,5 @@
|
|
|
1
|
-
export { createProtectedFetch, requirePreviewBaseUrl, requireProtectionBypass, requireSitemapProdUrl, resolvePreviewBaseUrl, resolveProductionSiteUrl, resolveProtectionBypass, resolveSitemapProdUrl, VERCEL_PROTECTION_BYPASS_HEADER, } from '../vercel-env.js';
|
|
1
|
+
export { createProtectedFetch, requireDeploymentBaseUrl, requirePreviewBaseUrl, requireProtectionBypass, requireSitemapProdUrl, resolveDeploymentBaseUrl, resolvePreviewBaseUrl, resolveProductionSiteUrl, resolveProtectionBypass, resolveSitemapProdUrl, VERCEL_PROTECTION_BYPASS_HEADER, } from '../vercel-env.js';
|
|
2
2
|
export { auditCacheLogs, formatCacheLogAuditReport, getCacheLogAuditExitCode, } from './cache-log-audit.js';
|
|
3
3
|
export { formatSmokeTestReport, getSmokeTestExitCode, isSmokeTestCacheVerifyResult, parseNextJsCacheHeader, runSmokeTest, runSmokeTestWithCacheVerify, } from './runner.js';
|
|
4
|
-
export { joinSmokeBaseUrl, loadStaticSmokeConfig, runPreviewStaticSmokeTest, runStaticSmokeTest, } from './static.js';
|
|
4
|
+
export { joinSmokeBaseUrl, loadStaticSmokeConfig, resolveSmokePortFromConfig, runLiveSmokeTest, runPreviewStaticSmokeTest, runStaticSmokeTest, } from './static.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/smoke-test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,GAChC,MAAM,kBAAkB,CAAC;AAO1B,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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/smoke-test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,GAChC,MAAM,kBAAkB,CAAC;AAO1B,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;AAErB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,aAAa,CAAC"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { LoadStaticSmokeConfigOptions, RunPreviewStaticSmokeTestOptions, RunStaticSmokeTestOptions, SmokeTestCacheVerifyResult, SmokeTestResult, SmokeTestRunnerConfig } from './types.js';
|
|
2
2
|
export declare function joinSmokeBaseUrl(baseUrl: string, path: string): string;
|
|
3
|
+
export declare function resolveSmokePortFromConfig(filePath: string, options?: {
|
|
4
|
+
cwd?: string;
|
|
5
|
+
portOverride?: number;
|
|
6
|
+
}): number;
|
|
3
7
|
export declare function loadStaticSmokeConfig(filePath: string, options?: LoadStaticSmokeConfigOptions): SmokeTestRunnerConfig;
|
|
4
8
|
export declare function runStaticSmokeTest(filePath: string, options?: RunStaticSmokeTestOptions): Promise<SmokeTestResult | SmokeTestCacheVerifyResult>;
|
|
9
|
+
export type RunLiveSmokeTestOptions = RunPreviewStaticSmokeTestOptions;
|
|
10
|
+
export declare function runLiveSmokeTest(filePath: string, options?: RunLiveSmokeTestOptions): Promise<SmokeTestResult>;
|
|
5
11
|
export declare function runPreviewStaticSmokeTest(filePath: string, options?: RunPreviewStaticSmokeTestOptions): Promise<SmokeTestResult>;
|
|
6
12
|
//# sourceMappingURL=static.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../../src/smoke-test/static.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../../src/smoke-test/static.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,4BAA4B,EAC5B,gCAAgC,EAChC,yBAAyB,EACzB,0BAA0B,EAE1B,eAAe,EACf,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAItE;AAaD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,MAAM,CAWR;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB,CAyBvB;AASD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,eAAe,GAAG,0BAA0B,CAAC,CAUvD;AASD,MAAM,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AAEvE,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,eAAe,CAAC,CAG1B;AAED,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,gCAAgC,GACzC,OAAO,CAAC,eAAe,CAAC,CAiB1B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { resolve } from 'node:path';
|
|
3
|
-
import { createProtectedFetch, requirePreviewBaseUrl, requireProtectionBypass, resolveProtectionBypass, } from '../vercel-env.js';
|
|
3
|
+
import { createProtectedFetch, requireDeploymentBaseUrl, requirePreviewBaseUrl, requireProtectionBypass, resolveProtectionBypass, } from '../vercel-env.js';
|
|
4
4
|
import { runSmokeTest, runSmokeTestWithCacheVerify } from './runner.js';
|
|
5
5
|
export function joinSmokeBaseUrl(baseUrl, path) {
|
|
6
6
|
const normalizedBase = baseUrl.replace(/\/$/, '');
|
|
@@ -17,6 +17,18 @@ function resolvePort(config, portOverride) {
|
|
|
17
17
|
}
|
|
18
18
|
return config.port;
|
|
19
19
|
}
|
|
20
|
+
export function resolveSmokePortFromConfig(filePath, options) {
|
|
21
|
+
if (options?.portOverride !== undefined) {
|
|
22
|
+
return options.portOverride;
|
|
23
|
+
}
|
|
24
|
+
const cwd = options?.cwd ?? process.cwd();
|
|
25
|
+
const absolutePath = resolve(cwd, filePath);
|
|
26
|
+
const raw = JSON.parse(readFileSync(absolutePath, 'utf8'));
|
|
27
|
+
if (!raw.port || !Number.isFinite(raw.port)) {
|
|
28
|
+
throw new Error(`Invalid smoke config port: ${absolutePath}`);
|
|
29
|
+
}
|
|
30
|
+
return raw.port;
|
|
31
|
+
}
|
|
20
32
|
export function loadStaticSmokeConfig(filePath, options) {
|
|
21
33
|
const cwd = options?.cwd ?? process.cwd();
|
|
22
34
|
const absolutePath = resolve(cwd, filePath);
|
|
@@ -62,6 +74,10 @@ function resolvePreviewBaseUrl(options) {
|
|
|
62
74
|
}
|
|
63
75
|
return requirePreviewBaseUrl(options?.env);
|
|
64
76
|
}
|
|
77
|
+
export async function runLiveSmokeTest(filePath, options) {
|
|
78
|
+
const baseUrl = options?.baseUrl ?? requireDeploymentBaseUrl(options?.env);
|
|
79
|
+
return runPreviewStaticSmokeTest(filePath, { ...options, baseUrl });
|
|
80
|
+
}
|
|
65
81
|
export async function runPreviewStaticSmokeTest(filePath, options) {
|
|
66
82
|
const requireBypass = options?.requireBypass ?? true;
|
|
67
83
|
if (requireBypass) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/smoke-test/static.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/smoke-test/static.ts"],"names":[],"mappings":"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"}
|
package/dist/vercel-env.d.ts
CHANGED
|
@@ -3,6 +3,9 @@ export declare function resolveProtectionBypass(env?: NodeJS.ProcessEnv): string
|
|
|
3
3
|
export declare function requireProtectionBypass(env?: NodeJS.ProcessEnv): string;
|
|
4
4
|
export declare function resolvePreviewBaseUrl(env?: NodeJS.ProcessEnv): string | undefined;
|
|
5
5
|
export declare function requirePreviewBaseUrl(env?: NodeJS.ProcessEnv): string;
|
|
6
|
+
/** CI / repository_dispatch: DEPLOYMENT_URL, then SMOKE_TEST_BASE_URL, then PREVIEW_SITE_URL. */
|
|
7
|
+
export declare function resolveDeploymentBaseUrl(env?: NodeJS.ProcessEnv): string | undefined;
|
|
8
|
+
export declare function requireDeploymentBaseUrl(env?: NodeJS.ProcessEnv): string;
|
|
6
9
|
export declare function resolveSitemapProdUrl(env?: NodeJS.ProcessEnv): string | undefined;
|
|
7
10
|
export declare function requireSitemapProdUrl(env?: NodeJS.ProcessEnv): string;
|
|
8
11
|
export declare function resolveProductionSiteUrl(env?: NodeJS.ProcessEnv): string | undefined;
|
package/dist/vercel-env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-env.d.ts","sourceRoot":"","sources":["../src/vercel-env.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,+BAA+B,CAAC;AAgB5E,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAQhG;AAED,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CASpF;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAM9F;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAQlF;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAM9F;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAMlF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAMjG;AAED,wBAAgB,oBAAoB,CAClC,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,KAAK,CAWd"}
|
|
1
|
+
{"version":3,"file":"vercel-env.d.ts","sourceRoot":"","sources":["../src/vercel-env.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,+BAA+B,CAAC;AAgB5E,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAQhG;AAED,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CASpF;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAM9F;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAQlF;AAED,iGAAiG;AACjG,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAQjG;AAED,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAQrF;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAM9F;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAMlF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAMjG;AAED,wBAAgB,oBAAoB,CAClC,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,KAAK,CAWd"}
|
package/dist/vercel-env.js
CHANGED
|
@@ -41,6 +41,23 @@ export function requirePreviewBaseUrl(env = process.env) {
|
|
|
41
41
|
}
|
|
42
42
|
return value;
|
|
43
43
|
}
|
|
44
|
+
/** CI / repository_dispatch: DEPLOYMENT_URL, then SMOKE_TEST_BASE_URL, then PREVIEW_SITE_URL. */
|
|
45
|
+
export function resolveDeploymentBaseUrl(env = process.env) {
|
|
46
|
+
for (const key of ['DEPLOYMENT_URL', 'SMOKE_TEST_BASE_URL']) {
|
|
47
|
+
const value = readEnvValue(env, key);
|
|
48
|
+
if (value) {
|
|
49
|
+
return trimTrailingSlash(value);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return resolvePreviewBaseUrl(env);
|
|
53
|
+
}
|
|
54
|
+
export function requireDeploymentBaseUrl(env = process.env) {
|
|
55
|
+
const value = resolveDeploymentBaseUrl(env);
|
|
56
|
+
if (!value) {
|
|
57
|
+
throw new Error('Set DEPLOYMENT_URL (CI / Vercel repository_dispatch) or PREVIEW_SITE_URL (local preview smoke).');
|
|
58
|
+
}
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
44
61
|
export function resolveSitemapProdUrl(env = process.env) {
|
|
45
62
|
const value = readEnvValue(env, 'SITEMAP_PROD_URL');
|
|
46
63
|
if (!value) {
|
package/dist/vercel-env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-env.js","sourceRoot":"","sources":["../src/vercel-env.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vercel-env.js","sourceRoot":"","sources":["../src/vercel-env.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@se-studio/site-check",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Validate SE marketing sites (sitemap, llms.txt) and download markdown files preserving structure",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -36,12 +36,16 @@
|
|
|
36
36
|
"bin": {
|
|
37
37
|
"site-check": "./dist/cli.js",
|
|
38
38
|
"site-check-screaming-frog": "./dist/screaming-frog-cli.js",
|
|
39
|
-
"smoke-test-one": "./smoke-test-one.mjs"
|
|
39
|
+
"smoke-test-one": "./smoke-test-one.mjs",
|
|
40
|
+
"smoke-test-deploy-check": "./smoke-test-deploy-check.mjs",
|
|
41
|
+
"smoke-test-live": "./smoke-test-live.mjs"
|
|
40
42
|
},
|
|
41
43
|
"files": [
|
|
42
44
|
"dist",
|
|
43
45
|
"*.md",
|
|
44
|
-
"smoke-test-one.mjs"
|
|
46
|
+
"smoke-test-one.mjs",
|
|
47
|
+
"smoke-test-deploy-check.mjs",
|
|
48
|
+
"smoke-test-live.mjs"
|
|
45
49
|
],
|
|
46
50
|
"keywords": [
|
|
47
51
|
"sitemap",
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Post-build deployment smoke check: start production server (no rebuild) and run smoke-test:run.
|
|
5
|
+
* Usage: smoke-test-deploy-check [port] (from app directory; port from smoke.cases.json if omitted)
|
|
6
|
+
*
|
|
7
|
+
* Env (set automatically; override if needed):
|
|
8
|
+
* SMOKE_TEST_SKIP_BUILD=true
|
|
9
|
+
* SMOKE_TEST_USE_RUNNING_SERVER=false
|
|
10
|
+
* SMOKE_TEST_SERVER_SCRIPT=start
|
|
11
|
+
* SMOKE_TEST_IGNORE=true — skip entirely (emergency bypass on Vercel)
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { spawn } from 'node:child_process';
|
|
15
|
+
import fs from 'node:fs';
|
|
16
|
+
import path from 'node:path';
|
|
17
|
+
import { fileURLToPath } from 'node:url';
|
|
18
|
+
|
|
19
|
+
const packageDir = path.dirname(fileURLToPath(import.meta.url));
|
|
20
|
+
const appDir = process.cwd();
|
|
21
|
+
|
|
22
|
+
function resolvePort(portArg) {
|
|
23
|
+
if (portArg && /^\d+$/.test(portArg)) {
|
|
24
|
+
return portArg;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const configPath = path.join(appDir, 'smoke.cases.json');
|
|
28
|
+
if (!fs.existsSync(configPath)) {
|
|
29
|
+
console.error('Usage: smoke-test-deploy-check [port]');
|
|
30
|
+
console.error(' Port required when smoke.cases.json is missing.');
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
35
|
+
if (!config.port || !Number.isFinite(config.port)) {
|
|
36
|
+
console.error(`Invalid port in ${configPath}`);
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return String(config.port);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const port = resolvePort(process.argv[2]);
|
|
44
|
+
const smokeTestOnePath = path.join(packageDir, 'smoke-test-one.mjs');
|
|
45
|
+
|
|
46
|
+
const env = {
|
|
47
|
+
...process.env,
|
|
48
|
+
SMOKE_TEST_SKIP_BUILD: 'true',
|
|
49
|
+
SMOKE_TEST_USE_RUNNING_SERVER: 'false',
|
|
50
|
+
SMOKE_TEST_SERVER_SCRIPT: 'start',
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const child = spawn(process.execPath, [smokeTestOnePath, port], {
|
|
54
|
+
cwd: appDir,
|
|
55
|
+
stdio: 'inherit',
|
|
56
|
+
env,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
child.on('error', (error) => {
|
|
60
|
+
console.error(error);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
child.on('exit', (code) => {
|
|
65
|
+
process.exit(code ?? 1);
|
|
66
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Live deployment smoke: HTTP checks against a deployed URL (CI / Vercel Deployment Checks).
|
|
5
|
+
* Usage: smoke-test-live [--url URL] [smoke.cases.json]
|
|
6
|
+
*
|
|
7
|
+
* Env:
|
|
8
|
+
* DEPLOYMENT_URL — primary CI URL (e.g. github.event.client_payload.url)
|
|
9
|
+
* SMOKE_TEST_BASE_URL — alias for DEPLOYMENT_URL
|
|
10
|
+
* PREVIEW_SITE_URL — local fallback (same as preview smoke)
|
|
11
|
+
* VERCEL_PROTECTION_BYPASS_TOKEN — deployment protection bypass
|
|
12
|
+
* SMOKE_TEST_IGNORE=true — skip entirely
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import path from 'node:path';
|
|
16
|
+
import { fileURLToPath } from 'node:url';
|
|
17
|
+
|
|
18
|
+
const packageDir = path.dirname(fileURLToPath(import.meta.url));
|
|
19
|
+
const appDir = process.cwd();
|
|
20
|
+
|
|
21
|
+
function parseArgs(argv) {
|
|
22
|
+
let url;
|
|
23
|
+
let casesFile = 'smoke.cases.json';
|
|
24
|
+
const args = argv.slice(2);
|
|
25
|
+
for (let i = 0; i < args.length; i++) {
|
|
26
|
+
const arg = args[i];
|
|
27
|
+
if (arg === '--url') {
|
|
28
|
+
const next = args[i + 1];
|
|
29
|
+
if (!next) {
|
|
30
|
+
console.error('Usage: smoke-test-live [--url URL] [smoke.cases.json]');
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
url = next;
|
|
34
|
+
i++;
|
|
35
|
+
} else if (!arg.startsWith('-')) {
|
|
36
|
+
casesFile = arg;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return { url, casesFile };
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if ((process.env.SMOKE_TEST_IGNORE ?? '').toLowerCase() === 'true') {
|
|
43
|
+
console.log('Skipped (SMOKE_TEST_IGNORE=true).');
|
|
44
|
+
process.exit(0);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const { url, casesFile } = parseArgs(process.argv);
|
|
48
|
+
const env = {
|
|
49
|
+
...process.env,
|
|
50
|
+
...(url ? { DEPLOYMENT_URL: url } : {}),
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const modulePath = path.join(packageDir, 'dist/smoke-test/index.js');
|
|
54
|
+
const { formatSmokeTestReport, getSmokeTestExitCode, runLiveSmokeTest } = await import(modulePath);
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
const result = await runLiveSmokeTest(casesFile, { env, cwd: appDir });
|
|
58
|
+
console.log(formatSmokeTestReport(result));
|
|
59
|
+
process.exit(getSmokeTestExitCode(result));
|
|
60
|
+
} catch (error) {
|
|
61
|
+
console.error(error instanceof Error ? error.message : error);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
package/smoke-test-one.mjs
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* SMOKE_TEST_CACHE_SKIP_SEVERITY=warn — cache-skip log severity: warn | error (default warn)
|
|
13
13
|
* SMOKE_TEST_READY_PATH=/ — path polled until server responds
|
|
14
14
|
* SMOKE_TEST_USE_RUNNING_SERVER=true — reuse server already on port (default true)
|
|
15
|
+
* SMOKE_TEST_SKIP_BUILD=true — skip pnpm build when SERVER_SCRIPT=start (post-build deploy check)
|
|
15
16
|
* LOG_CMS_FETCH=1 — set when VERIFY_CACHE or AUDIT_CACHE_LOGS is true
|
|
16
17
|
*/
|
|
17
18
|
|
|
@@ -190,11 +191,12 @@ const useRunningServer = (env.SMOKE_TEST_USE_RUNNING_SERVER ?? 'true').toLowerCa
|
|
|
190
191
|
const readyPath = env.SMOKE_TEST_READY_PATH ?? '/';
|
|
191
192
|
const readyUrl = `${baseUrl}${readyPath.startsWith('/') ? readyPath : `/${readyPath}`}`;
|
|
192
193
|
const isProductionStart = serverScript === 'start';
|
|
194
|
+
const skipBuild = (env.SMOKE_TEST_SKIP_BUILD ?? '').toLowerCase() === 'true';
|
|
193
195
|
const startTimeoutMs = isProductionStart ? 120_000 : 300_000;
|
|
194
196
|
|
|
195
197
|
const logBuffer = { text: '' };
|
|
196
198
|
|
|
197
|
-
if (isProductionStart) {
|
|
199
|
+
if (isProductionStart && !skipBuild) {
|
|
198
200
|
console.log('Building app...');
|
|
199
201
|
const buildResult = spawnSync('pnpm', ['build'], {
|
|
200
202
|
cwd: appDir,
|