apitestcenter 0.8.0 → 0.9.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/dist/THIRD-PARTY-NOTICES-UI.txt +1 -1
- package/dist/THIRD-PARTY-NOTICES.txt +1 -1
- package/dist/cli.mjs +116 -13
- package/dist/ui/404/index.html +1 -1
- package/dist/ui/404.html +1 -1
- package/dist/ui/__next.__PAGE__.txt +10 -10
- package/dist/ui/__next._full.txt +11 -11
- package/dist/ui/__next._tree.txt +2 -2
- package/dist/ui/_next/static/chunks/{11nxnz4doxir5.js → 13xdai3-mkg7c.js} +61 -60
- package/dist/ui/_next/static/chunks/2i7s5kuurlkr6.css +3 -0
- package/dist/ui/_next/static/chunks/2od90u8fd_sla.js +18 -0
- package/dist/ui/_next/static/chunks/36lx6-56-udwb.js +2 -0
- package/dist/ui/_next/static/chunks/3qxq1d9u_kohv.js +1 -0
- package/dist/ui/_not-found/__next._full.txt +10 -10
- package/dist/ui/_not-found/__next._not-found.__PAGE__.txt +9 -9
- package/dist/ui/_not-found/__next._tree.txt +2 -2
- package/dist/ui/_not-found/index.html +1 -1
- package/dist/ui/_not-found/index.txt +10 -10
- package/dist/ui/compare/__next._full.txt +11 -11
- package/dist/ui/compare/__next._tree.txt +2 -2
- package/dist/ui/compare/__next.compare.__PAGE__.txt +10 -10
- package/dist/ui/compare/index.html +1 -1
- package/dist/ui/compare/index.txt +11 -11
- package/dist/ui/history/__next._full.txt +12 -12
- package/dist/ui/history/__next._tree.txt +2 -2
- package/dist/ui/history/__next.history.__PAGE__.txt +11 -11
- package/dist/ui/history/index.html +1 -1
- package/dist/ui/history/index.txt +12 -12
- package/dist/ui/index.html +1 -1
- package/dist/ui/index.txt +11 -11
- package/dist/ui/preview/__next._full.txt +12 -12
- package/dist/ui/preview/__next._tree.txt +2 -2
- package/dist/ui/preview/__next.preview.__PAGE__.txt +11 -11
- package/dist/ui/preview/index.html +1 -1
- package/dist/ui/preview/index.txt +12 -12
- package/dist/ui/suite/__next._full.txt +11 -11
- package/dist/ui/suite/__next._tree.txt +2 -2
- package/dist/ui/suite/__next.suite.__PAGE__.txt +10 -10
- package/dist/ui/suite/index.html +1 -1
- package/dist/ui/suite/index.txt +11 -11
- package/dist/ui/tests/__next._full.txt +10 -10
- package/dist/ui/tests/__next._tree.txt +2 -2
- package/dist/ui/tests/__next.tests.__PAGE__.txt +9 -9
- package/dist/ui/tests/index.html +1 -1
- package/dist/ui/tests/index.txt +10 -10
- package/package.json +1 -1
- package/dist/ui/_next/static/chunks/0-898cb98enjv.css +0 -3
- package/dist/ui/_next/static/chunks/0e1nwxi9i1ag7.js +0 -1
- package/dist/ui/_next/static/chunks/0vkcbl8nakdh1.js +0 -2
- package/dist/ui/_next/static/chunks/2xls_z5abvl-5.js +0 -1
- /package/dist/ui/_next/static/{BJz1RrA7HqZwUV22DBTCg → C6zMFzDkVqF8IXny_v7JK}/_buildManifest.js +0 -0
- /package/dist/ui/_next/static/{BJz1RrA7HqZwUV22DBTCg → C6zMFzDkVqF8IXny_v7JK}/_clientMiddlewareManifest.js +0 -0
- /package/dist/ui/_next/static/{BJz1RrA7HqZwUV22DBTCg → C6zMFzDkVqF8IXny_v7JK}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
APITestCenter CLI 0.
|
|
1
|
+
APITestCenter CLI 0.9.0 — notices for the app screens in dist/ui (used by `atc ui`)
|
|
2
2
|
|
|
3
3
|
==============================================================================
|
|
4
4
|
@babel/runtime 7.29.7 — MIT
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
APITestCenter CLI 0.
|
|
1
|
+
APITestCenter CLI 0.9.0 — third-party notices
|
|
2
2
|
|
|
3
3
|
This package bundles the open-source packages below. k6 (AGPL-3.0) is not bundled: if it is
|
|
4
4
|
not installed, the CLI downloads the unmodified official release from github.com/grafana/k6.
|
package/dist/cli.mjs
CHANGED
|
@@ -16070,7 +16070,7 @@ function checkLabel(check2) {
|
|
|
16070
16070
|
case "body":
|
|
16071
16071
|
return `body ${check2.op === "contains" ? "contains" : "does not contain"} "${clip(check2.value)}"`;
|
|
16072
16072
|
case "json":
|
|
16073
|
-
return check2.op === "exists" ? `${jsonPathLabel(check2.path)} exists` : `${jsonPathLabel(check2.path)} ${check2.op === "equals" ? "=" : check2.op === "not_equals" ? "\u2260" : "contains"} "${clip(check2.value)}"`;
|
|
16073
|
+
return check2.op === "exists" || check2.op === "not_exists" ? `${jsonPathLabel(check2.path)} ${check2.op === "exists" ? "exists" : "does not exist"}` : `${jsonPathLabel(check2.path)} ${check2.op === "equals" ? "=" : check2.op === "not_equals" ? "\u2260" : "contains"} "${clip(check2.value)}"`;
|
|
16074
16074
|
case "header":
|
|
16075
16075
|
return check2.op === "exists" ? `header ${check2.name} exists` : `header ${check2.name} ${check2.op === "equals" ? "=" : "contains"} "${clip(check2.value)}"`;
|
|
16076
16076
|
case "time":
|
|
@@ -16115,7 +16115,7 @@ var init_checks3 = __esm({
|
|
|
16115
16115
|
external_exports.object({
|
|
16116
16116
|
type: external_exports.literal("json"),
|
|
16117
16117
|
path: external_exports.string().min(1).max(300),
|
|
16118
|
-
op: external_exports.enum(["exists", "equals", "not_equals", "contains"]),
|
|
16118
|
+
op: external_exports.enum(["exists", "not_exists", "equals", "not_equals", "contains"]),
|
|
16119
16119
|
value: external_exports.string().max(2e3).default("")
|
|
16120
16120
|
}).strict(),
|
|
16121
16121
|
external_exports.object({
|
|
@@ -16178,6 +16178,7 @@ function __atcCheck(check, res) {
|
|
|
16178
16178
|
try { parsed = JSON.parse(res.body); } catch (e) { return false; }
|
|
16179
16179
|
var got = __atcJsonGet(parsed, check.path);
|
|
16180
16180
|
if (check.op === "exists") return got.found;
|
|
16181
|
+
if (check.op === "not_exists") return !got.found;
|
|
16181
16182
|
if (!got.found) return check.op === "not_equals";
|
|
16182
16183
|
var text = __atcAsText(got.value);
|
|
16183
16184
|
if (check.op === "equals") return text === check.value;
|
|
@@ -24098,6 +24099,10 @@ function defaultRequestDraft() {
|
|
|
24098
24099
|
params: [],
|
|
24099
24100
|
headers: [],
|
|
24100
24101
|
bodyMode: "none",
|
|
24102
|
+
graphqlQuery: "",
|
|
24103
|
+
graphqlVariables: "",
|
|
24104
|
+
graphqlOperation: "",
|
|
24105
|
+
graphqlErrorsFail: true,
|
|
24101
24106
|
bodyText: "",
|
|
24102
24107
|
authMode: "inherit",
|
|
24103
24108
|
oauth: defaultOAuth(),
|
|
@@ -24157,7 +24162,7 @@ function requestFromUnknown(value) {
|
|
|
24157
24162
|
const base = defaultRequestDraft();
|
|
24158
24163
|
if (!value || typeof value !== "object") return base;
|
|
24159
24164
|
const item = value;
|
|
24160
|
-
const bodyMode = item.bodyMode === "json" || item.bodyMode === "text" ? item.bodyMode : "none";
|
|
24165
|
+
const bodyMode = item.bodyMode === "json" || item.bodyMode === "text" || item.bodyMode === "graphql" ? item.bodyMode : "none";
|
|
24161
24166
|
const authMode2 = item.authMode === "bearer" || item.authMode === "basic" || item.authMode === "api_key" || item.authMode === "inherit" || item.authMode === "oauth2" || item.authMode === "digest" || item.authMode === "ntlm" || item.authMode === "aws_sigv4" || item.authMode === "jwt" || item.authMode === "oauth1" ? item.authMode : item.authMode === void 0 ? "inherit" : "none";
|
|
24162
24167
|
return {
|
|
24163
24168
|
method: METHODS.includes(item.method) ? item.method : "GET",
|
|
@@ -24168,6 +24173,10 @@ function requestFromUnknown(value) {
|
|
|
24168
24173
|
headers: rows(item.headers),
|
|
24169
24174
|
bodyMode,
|
|
24170
24175
|
bodyText: str(item.bodyText, ""),
|
|
24176
|
+
graphqlQuery: str(item.graphqlQuery, ""),
|
|
24177
|
+
graphqlVariables: str(item.graphqlVariables, ""),
|
|
24178
|
+
graphqlOperation: str(item.graphqlOperation, ""),
|
|
24179
|
+
graphqlErrorsFail: item.graphqlErrorsFail !== false,
|
|
24171
24180
|
authMode: authMode2,
|
|
24172
24181
|
oauth: oauthFromUnknown(item.oauth),
|
|
24173
24182
|
oauth1: oauth1FromUnknown(item.oauth1),
|
|
@@ -24300,6 +24309,17 @@ function requestParts(draft) {
|
|
|
24300
24309
|
if (bare) throw new Error(`Put quotes around {{${bare}}} in the JSON body \u2014 values from test data and run-first steps are filled in as text`);
|
|
24301
24310
|
throw new Error(`Body is not valid JSON: ${err instanceof Error ? err.message : "parse error"}`);
|
|
24302
24311
|
}
|
|
24312
|
+
} else if (hasBody(draft.method) && draft.bodyMode === "graphql") {
|
|
24313
|
+
if (!draft.graphqlQuery.trim()) throw new Error("Write the GraphQL query");
|
|
24314
|
+
let variables = {};
|
|
24315
|
+
if (draft.graphqlVariables.trim()) {
|
|
24316
|
+
try {
|
|
24317
|
+
variables = JSON.parse(draft.graphqlVariables);
|
|
24318
|
+
} catch (err) {
|
|
24319
|
+
throw new Error(`GraphQL variables are not valid JSON: ${err instanceof Error ? err.message : "parse error"} \u2014 put quotes around "{{values}}" from test data`);
|
|
24320
|
+
}
|
|
24321
|
+
}
|
|
24322
|
+
body = { mode: "json", json: { query: draft.graphqlQuery, variables, ...draft.graphqlOperation.trim() ? { operationName: draft.graphqlOperation.trim() } : {} } };
|
|
24303
24323
|
} else if (hasBody(draft.method) && draft.bodyMode === "text") {
|
|
24304
24324
|
body = { mode: "text", text: draft.bodyText };
|
|
24305
24325
|
}
|
|
@@ -24311,7 +24331,11 @@ function requestParts(draft) {
|
|
|
24311
24331
|
headers: draft.headers.filter((h) => h.key.trim()),
|
|
24312
24332
|
body,
|
|
24313
24333
|
expectedStatus: [],
|
|
24314
|
-
|
|
24334
|
+
// GraphQL answers 200 even when the query failed; "errors" in the answer is the failure.
|
|
24335
|
+
checks: [
|
|
24336
|
+
...usableChecks(draft.checks),
|
|
24337
|
+
...hasBody(draft.method) && draft.bodyMode === "graphql" && draft.graphqlErrorsFail ? [{ type: "json", path: "errors", op: "not_exists", value: "" }] : []
|
|
24338
|
+
]
|
|
24315
24339
|
},
|
|
24316
24340
|
auth,
|
|
24317
24341
|
options: {
|
|
@@ -24462,6 +24486,8 @@ var init_draft = __esm({
|
|
|
24462
24486
|
"params",
|
|
24463
24487
|
"headers",
|
|
24464
24488
|
"bodyText",
|
|
24489
|
+
"graphqlQuery",
|
|
24490
|
+
"graphqlVariables",
|
|
24465
24491
|
"token",
|
|
24466
24492
|
"username",
|
|
24467
24493
|
"password",
|
|
@@ -25679,6 +25705,13 @@ function __atcOAuth1(method, url, headers, body) {
|
|
|
25679
25705
|
}
|
|
25680
25706
|
});
|
|
25681
25707
|
|
|
25708
|
+
// ../shared/src/graphql.ts
|
|
25709
|
+
var init_graphql = __esm({
|
|
25710
|
+
"../shared/src/graphql.ts"() {
|
|
25711
|
+
"use strict";
|
|
25712
|
+
}
|
|
25713
|
+
});
|
|
25714
|
+
|
|
25682
25715
|
// ../shared/src/export-fields.ts
|
|
25683
25716
|
function roundN(n, digits = 2) {
|
|
25684
25717
|
if (!Number.isFinite(n)) return 0;
|
|
@@ -26636,6 +26669,7 @@ var init_src = __esm({
|
|
|
26636
26669
|
init_ci_templates();
|
|
26637
26670
|
init_sigv4();
|
|
26638
26671
|
init_oauth1();
|
|
26672
|
+
init_graphql();
|
|
26639
26673
|
init_latency_bins();
|
|
26640
26674
|
init_checks3();
|
|
26641
26675
|
init_definition();
|
|
@@ -73162,6 +73196,17 @@ async function runProbe(input) {
|
|
|
73162
73196
|
const saved = parsed.save?.length && !sent.result.error ? takeValues(parsed.save, sent) : void 0;
|
|
73163
73197
|
return { ...sent.result, setup, dataRow: parsed.data ? { row: 1, of: parsed.data.rows.length } : void 0, saved };
|
|
73164
73198
|
}
|
|
73199
|
+
async function probeFull(input) {
|
|
73200
|
+
const parsed = parseLab(input);
|
|
73201
|
+
let vars = {};
|
|
73202
|
+
if (parsed.setup) {
|
|
73203
|
+
const step = await runSetupStep(parsed.setup);
|
|
73204
|
+
if (!step.result.ok) return { status: 0, body: "", error: step.result.error };
|
|
73205
|
+
vars = step.vars;
|
|
73206
|
+
}
|
|
73207
|
+
const sent = await sendOnce(fillLab(parsed, vars));
|
|
73208
|
+
return { status: sent.result.status, body: sent.raw.slice(0, 2e7), error: sent.result.error };
|
|
73209
|
+
}
|
|
73165
73210
|
function takeValues(rules, sent) {
|
|
73166
73211
|
const res = { status: sent.result.status, headers: sent.lowered, body: sent.raw, durationMs: sent.result.durationMs };
|
|
73167
73212
|
return rules.map((rule) => {
|
|
@@ -112123,6 +112168,8 @@ async function routes(api) {
|
|
|
112123
112168
|
status: "ok",
|
|
112124
112169
|
service: "engine",
|
|
112125
112170
|
version: appVersion,
|
|
112171
|
+
// "cli": started by `atc ui` — the screens say so when it stops.
|
|
112172
|
+
host: process.env.ATC_HOST ?? (uiDir ? "desktop" : "dev"),
|
|
112126
112173
|
persistence: "files",
|
|
112127
112174
|
dataDir: history.dir,
|
|
112128
112175
|
k6: await detectK6(root),
|
|
@@ -112149,6 +112196,13 @@ async function routes(api) {
|
|
|
112149
112196
|
return usage.setEnabled(request3.body.enabled);
|
|
112150
112197
|
});
|
|
112151
112198
|
await api.register(async (demo) => registerDemoApi(demo), { prefix: "/demo-api", logLevel: "warn" });
|
|
112199
|
+
api.post("/graphql/introspect", async (request3, reply) => {
|
|
112200
|
+
try {
|
|
112201
|
+
return await probeFull(request3.body);
|
|
112202
|
+
} catch (err) {
|
|
112203
|
+
return reply.code(400).send({ error: err instanceof Error ? err.message : "invalid request" });
|
|
112204
|
+
}
|
|
112205
|
+
});
|
|
112152
112206
|
api.post("/probe", async (request3, reply) => {
|
|
112153
112207
|
const parsed = labRequestSchema.safeParse(request3.body);
|
|
112154
112208
|
if (!parsed.success) {
|
|
@@ -112304,7 +112358,8 @@ init_src();
|
|
|
112304
112358
|
init_draft();
|
|
112305
112359
|
init_history_store();
|
|
112306
112360
|
init_k6();
|
|
112307
|
-
import { spawn as spawn3 } from "node:child_process";
|
|
112361
|
+
import { spawn as spawn3, spawnSync } from "node:child_process";
|
|
112362
|
+
import { tmpdir as tmpdir3 } from "node:os";
|
|
112308
112363
|
import { randomUUID as randomUUID7 } from "node:crypto";
|
|
112309
112364
|
import { existsSync as existsSync2, mkdirSync as mkdirSync2, readdirSync as readdirSync2, writeFileSync as writeFileSync2 } from "node:fs";
|
|
112310
112365
|
import { readFile as readFile10, writeFile as writeFile9 } from "node:fs/promises";
|
|
@@ -112393,11 +112448,12 @@ init_cookies();
|
|
|
112393
112448
|
init_workspace_store();
|
|
112394
112449
|
var repoRoot = resolve4(dirname3(fileURLToPath2(import.meta.url)), "../../..");
|
|
112395
112450
|
var EXIT = { passed: 0, failed: 1, error: 2 };
|
|
112396
|
-
var VERSION = "0.
|
|
112451
|
+
var VERSION = "0.9.0";
|
|
112397
112452
|
var HELP = `APITestCenter CLI ${VERSION} \u2014 https://apitestcenter.com/docs/cli-and-ci.html
|
|
112398
112453
|
|
|
112399
112454
|
Usage (apitestcenter, or the short name atc once installed)
|
|
112400
|
-
atc ui [collection] Open the app in
|
|
112455
|
+
atc ui [collection] Open the app in a window to build and edit tests
|
|
112456
|
+
(--browser: a tab in your usual browser; --no-open: just print the address)
|
|
112401
112457
|
atc init [collection] Start api-tests/ in this repository, with a CI pipeline
|
|
112402
112458
|
atc suite <collection> [options] Send every request in a collection once and check each one
|
|
112403
112459
|
atc run <request> [options] Run a load test and exit 0 (passed) / 1 (failed) / 2 (error)
|
|
@@ -112482,7 +112538,8 @@ async function main() {
|
|
|
112482
112538
|
help: { type: "boolean", short: "h" },
|
|
112483
112539
|
version: { type: "boolean", short: "v" },
|
|
112484
112540
|
data: { type: "string" },
|
|
112485
|
-
"no-open": { type: "boolean" }
|
|
112541
|
+
"no-open": { type: "boolean" },
|
|
112542
|
+
browser: { type: "boolean" }
|
|
112486
112543
|
}
|
|
112487
112544
|
});
|
|
112488
112545
|
const [command, target] = positionals;
|
|
@@ -112500,7 +112557,7 @@ async function main() {
|
|
|
112500
112557
|
}
|
|
112501
112558
|
if (command === "init") return init(target, values.data ?? "api-tests");
|
|
112502
112559
|
const dataDir = resolveDataDir();
|
|
112503
|
-
if (command === "ui") return ui(target, dataDir, values["no-open"] === true);
|
|
112560
|
+
if (command === "ui") return ui(target, dataDir, values["no-open"] === true, values.browser === true);
|
|
112504
112561
|
const secrets2 = new SecretStore(dataDir);
|
|
112505
112562
|
const workspace = new WorkspaceStore(dataDir, secrets2);
|
|
112506
112563
|
useOAuthStore(secrets2);
|
|
@@ -112684,9 +112741,9 @@ compared with baseline \u201C${baseline.testName}\u201D (${baseline.startedAt.sl
|
|
|
112684
112741
|
if (history2) log(` saved to History in ${dataDir}`);
|
|
112685
112742
|
return failed ? EXIT.failed : EXIT.passed;
|
|
112686
112743
|
}
|
|
112687
|
-
async function ui(collection, dataDir, noOpen) {
|
|
112744
|
+
async function ui(collection, dataDir, noOpen, inBrowserTab = false) {
|
|
112688
112745
|
const here = dirname3(fileURLToPath2(import.meta.url));
|
|
112689
|
-
const uiDir2 = [resolve4(here, "ui"), resolve4(repoRoot, "apps/web/.next-desktop")].find((d) => existsSync2(resolve4(d, "index.html")));
|
|
112746
|
+
const uiDir2 = [process.env.ATC_UI_DIR, resolve4(here, "ui"), resolve4(repoRoot, "apps/web/.next-desktop")].find((d) => Boolean(d) && existsSync2(resolve4(d, "index.html")));
|
|
112690
112747
|
if (!uiDir2) fail("this build has no app screens. Use the npm package (npx apitestcenter ui), or run: pnpm --filter @apitestcenter/desktop build:ui");
|
|
112691
112748
|
Object.assign(process.env, {
|
|
112692
112749
|
ATC_UI_DIR: uiDir2,
|
|
@@ -112697,7 +112754,9 @@ async function ui(collection, dataDir, noOpen) {
|
|
|
112697
112754
|
ATC_USAGE_URL: "",
|
|
112698
112755
|
ATC_NO_DOTENV: "1",
|
|
112699
112756
|
ATC_NO_READY_LINE: "1",
|
|
112700
|
-
ATC_LOG_LEVEL: process.env.ATC_LOG_LEVEL ?? "warn"
|
|
112757
|
+
ATC_LOG_LEVEL: process.env.ATC_LOG_LEVEL ?? "warn",
|
|
112758
|
+
// The screens show "stopped" when this engine goes away (a browser tab can't be closed for them).
|
|
112759
|
+
ATC_HOST: "cli"
|
|
112701
112760
|
});
|
|
112702
112761
|
if (!(await resolveK6Bin(repoRoot)).available) {
|
|
112703
112762
|
const cached3 = cachedK6();
|
|
@@ -112712,10 +112771,54 @@ async function ui(collection, dataDir, noOpen) {
|
|
|
112712
112771
|
console.log(` tests in: ${dataDir}`);
|
|
112713
112772
|
console.log(" Saved secrets last until you stop it \u2014 use {{variables}} for tests you commit.");
|
|
112714
112773
|
console.log(" Press Ctrl+C to stop.");
|
|
112715
|
-
if (!noOpen)
|
|
112774
|
+
if (!noOpen) {
|
|
112775
|
+
const win = inBrowserTab ? null : openAppWindow(page2);
|
|
112776
|
+
if (!win) openBrowser(page2);
|
|
112777
|
+
else {
|
|
112778
|
+
console.log(" Closing the window stops it too.");
|
|
112779
|
+
const stop = (why) => {
|
|
112780
|
+
if (why) console.log(why);
|
|
112781
|
+
closeWindow(win);
|
|
112782
|
+
process.exit(EXIT.passed);
|
|
112783
|
+
};
|
|
112784
|
+
process.on("SIGINT", () => stop("\nStopped."));
|
|
112785
|
+
process.on("SIGTERM", () => stop(""));
|
|
112786
|
+
win.on("exit", () => {
|
|
112787
|
+
console.log("Window closed \u2014 stopped.");
|
|
112788
|
+
process.exit(EXIT.passed);
|
|
112789
|
+
});
|
|
112790
|
+
}
|
|
112791
|
+
}
|
|
112716
112792
|
return new Promise(() => {
|
|
112717
112793
|
});
|
|
112718
112794
|
}
|
|
112795
|
+
function findAppBrowser() {
|
|
112796
|
+
const env = process.env;
|
|
112797
|
+
const candidates = process.platform === "win32" ? [env["ProgramFiles(x86)"], env.ProgramFiles, env.LOCALAPPDATA].flatMap(
|
|
112798
|
+
(root2) => root2 ? [`${root2}\\Microsoft\\Edge\\Application\\msedge.exe`, `${root2}\\Google\\Chrome\\Application\\chrome.exe`, `${root2}\\BraveSoftware\\Brave-Browser\\Application\\brave.exe`] : []
|
|
112799
|
+
) : process.platform === "darwin" ? ["/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge", "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", "/Applications/Chromium.app/Contents/MacOS/Chromium", "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser"] : ["/usr/bin/microsoft-edge", "/usr/bin/google-chrome", "/usr/bin/google-chrome-stable", "/usr/bin/chromium", "/usr/bin/chromium-browser", "/usr/bin/brave-browser", "/snap/bin/chromium"];
|
|
112800
|
+
return candidates.find((p) => existsSync2(p)) ?? null;
|
|
112801
|
+
}
|
|
112802
|
+
function openAppWindow(url2) {
|
|
112803
|
+
const bin = findAppBrowser();
|
|
112804
|
+
if (!bin) return null;
|
|
112805
|
+
const profile = resolve4(tmpdir3(), "apitestcenter-ui-window");
|
|
112806
|
+
try {
|
|
112807
|
+
const child = spawn3(bin, [`--app=${url2}`, `--user-data-dir=${profile}`, "--no-first-run", "--no-default-browser-check", "--window-size=1440,900"], { stdio: "ignore", windowsHide: false });
|
|
112808
|
+
child.on("error", () => openBrowser(url2));
|
|
112809
|
+
return child;
|
|
112810
|
+
} catch {
|
|
112811
|
+
return null;
|
|
112812
|
+
}
|
|
112813
|
+
}
|
|
112814
|
+
function closeWindow(win) {
|
|
112815
|
+
if (win.exitCode !== null || !win.pid) return;
|
|
112816
|
+
try {
|
|
112817
|
+
if (process.platform === "win32") spawnSync("taskkill", ["/pid", String(win.pid), "/T", "/F"], { stdio: "ignore", windowsHide: true });
|
|
112818
|
+
else win.kill("SIGTERM");
|
|
112819
|
+
} catch {
|
|
112820
|
+
}
|
|
112821
|
+
}
|
|
112719
112822
|
function openBrowser(url2) {
|
|
112720
112823
|
const [cmd, args] = process.platform === "win32" ? ["cmd", ["/c", "start", "", url2]] : process.platform === "darwin" ? ["open", [url2]] : ["xdg-open", [url2]];
|
|
112721
112824
|
try {
|
package/dist/ui/404/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en" class="h-full ibm_plex_sans_324d14c7-module__gA-HIW__variable ibm_plex_mono_1876b2ed-module__4fpJGW__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0-898cb98enjv.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/41ad2nnyaestx.js"/><script src="/_next/static/chunks/08w_94tt7q8fk.js" async=""></script><script src="/_next/static/chunks/0ezgetg09gtvn.js" async=""></script><script src="/_next/static/chunks/1l0uy37izo74u.js" async=""></script><script src="/_next/static/chunks/turbopack-2kiaj9_7vlslw.js" async=""></script><script src="/_next/static/chunks/2xls_z5abvl-5.js" async="" crossorigin=""></script><script src="/_next/static/chunks/11nxnz4doxir5.js" async="" crossorigin=""></script><script src="/_next/static/chunks/0e1nwxi9i1ag7.js" async="" crossorigin=""></script><meta name="robots" content="noindex"/><title>APITestCenter</title><meta name="description" content="HTTP API performance testing — configure, run, visualize, export."/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="h-full font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","apitestcenter-theme","system",null,["light","dark"],null,true,true)</script><div class="flex h-dvh overflow-hidden"><a href="#main" class="sr-only z-50 rounded-md bg-accent px-3 py-2 text-sm text-canvas focus:not-sr-only focus:fixed focus:top-2 focus:left-2">Skip to content</a><aside aria-label="Main navigation" class="flex h-full shrink-0 flex-col border-r border-line bg-panel transition-[width] duration-150 w-56"><div class="flex items-center border-b border-line justify-between gap-2 px-4 py-4"><a class="min-w-0" aria-label="APITestCenter home" href="/"><span class="block"><span class="block text-sm font-semibold text-ink">APITestCenter</span><span class="block text-xs text-mute">API & performance lab</span></span></a><button type="button" aria-label="Collapse sidebar" aria-expanded="true" class="shrink-0 rounded-md p-1.5 text-mute hover:bg-panel-2 hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div><nav class="flex flex-1 flex-col gap-0.5 p-3"><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-flask-conical" aria-hidden="true"><path d="M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2"></path><path d="M6.453 15h11.094"></path><path d="M8.5 2h7"></path></svg>Test API</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/suite/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-list-checks" aria-hidden="true"><path d="m3 17 2 2 4-4"></path><path d="m3 7 2 2 4-4"></path><path d="M13 6h8"></path><path d="M13 12h8"></path><path d="M13 18h8"></path></svg>Run collection</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/compare/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-git-compare-arrows" aria-hidden="true"><circle cx="5" cy="6" r="3"></circle><path d="M12 6h5a2 2 0 0 1 2 2v7"></path><path d="m15 9-3-3 3-3"></path><circle cx="19" cy="18" r="3"></circle><path d="M12 18H7a2 2 0 0 1-2-2V9"></path><path d="m9 15 3 3-3 3"></path></svg>Compare</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/history/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-history" aria-hidden="true"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path><path d="M12 7v5l4 2"></path></svg>History</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/preview/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-search" aria-hidden="true"><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M4.268 21a2 2 0 0 0 1.727 1H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3"></path><path d="m9 18-1.5-1.5"></path><circle cx="5" cy="14" r="3"></circle></svg>Open report</a></nav><div class="space-y-3 border-t border-line p-4"><button type="button" data-tour="help" title="What the words mean, and the tour" aria-label="Help" class="flex w-full items-center rounded-md border border-line text-xs text-mute hover:border-accent hover:text-ink gap-2 px-2.5 py-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-question-mark" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path></svg>Help · what words mean</button><button type="button" title="Command palette (Ctrl+K)" aria-label="Open command palette" class="flex w-full items-center rounded-md border border-line text-xs text-mute hover:border-accent hover:text-ink gap-2 px-2.5 py-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-command" aria-hidden="true"><path d="M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3"></path></svg>Commands <span class="kbd ml-auto">Ctrl K</span></button><div><div class="grid grid-cols-3 gap-1 rounded-md border border-line bg-panel-2 p-1" role="radiogroup" aria-label="Theme"><button type="button" role="radio" aria-checked="true" aria-label="System" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors bg-panel text-ink shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-monitor" aria-hidden="true"><rect width="20" height="14" x="2" y="3" rx="2"></rect><line x1="8" x2="16" y1="21" y2="21"></line><line x1="12" x2="12" y1="17" y2="21"></line></svg><span>System</span></button><button type="button" role="radio" aria-checked="false" aria-label="Light" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors text-mute hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><span>Light</span></button><button type="button" role="radio" aria-checked="false" aria-label="Dark" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors text-mute hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg><span>Dark</span></button></div></div><div class="text-xs" role="status"><div class="flex items-center gap-2 text-ink"><span class="h-2 w-2 rounded-full bg-mute" aria-hidden="true"></span>Checking engine</div><div class="mt-1 text-xs leading-snug text-mute">…</div><button type="button" class="mt-1 text-xs text-mute hover:text-accent" title="Version, updates, and where your files are">Development build<!-- --> · About</button></div></div></aside><main id="main" class="flex min-h-0 min-w-0 flex-1 flex-col overflow-y-auto"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><div aria-live="polite" class="pointer-events-none fixed right-4 bottom-4 z-50 flex w-[min(24rem,calc(100vw-2rem))] flex-col gap-2"></div><script src="/_next/static/chunks/41ad2nnyaestx.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[87329,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"Providers\"]\n3:I[60459,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"AppShell\"]\n4:I[32428,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"default\"]\n5:I[48549,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"default\"]\n6:I[65709,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[65709,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"ViewportBoundary\"]\nc:I[65709,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"MetadataBoundary\"]\ne:I[49202,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0-898cb98enjv.css\",\"style\"]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0-898cb98enjv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2xls_z5abvl-5.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/11nxnz4doxir5.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0e1nwxi9i1ag7.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full ibm_plex_sans_324d14c7-module__gA-HIW__variable ibm_plex_mono_1876b2ed-module__4fpJGW__variable\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"h-full font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0-898cb98enjv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"BJz1RrA7HqZwUV22DBTCg\"}\n9:C\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"APITestCenter\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"HTTP API performance testing — configure, run, visualize, export.\"}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html lang="en" class="h-full ibm_plex_sans_324d14c7-module__gA-HIW__variable ibm_plex_mono_1876b2ed-module__4fpJGW__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/2i7s5kuurlkr6.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/41ad2nnyaestx.js"/><script src="/_next/static/chunks/08w_94tt7q8fk.js" async=""></script><script src="/_next/static/chunks/0ezgetg09gtvn.js" async=""></script><script src="/_next/static/chunks/1l0uy37izo74u.js" async=""></script><script src="/_next/static/chunks/turbopack-2kiaj9_7vlslw.js" async=""></script><script src="/_next/static/chunks/3fb2986f7qg9x.js" async="" crossorigin=""></script><script src="/_next/static/chunks/3qxq1d9u_kohv.js" async="" crossorigin=""></script><script src="/_next/static/chunks/2od90u8fd_sla.js" async="" crossorigin=""></script><script src="/_next/static/chunks/13xdai3-mkg7c.js" async="" crossorigin=""></script><meta name="robots" content="noindex"/><title>APITestCenter</title><meta name="description" content="HTTP API performance testing — configure, run, visualize, export."/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="h-full font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","apitestcenter-theme","system",null,["light","dark"],null,true,true)</script><div class="flex h-dvh overflow-hidden"><a href="#main" class="sr-only z-50 rounded-md bg-accent px-3 py-2 text-sm text-canvas focus:not-sr-only focus:fixed focus:top-2 focus:left-2">Skip to content</a><aside aria-label="Main navigation" class="flex h-full shrink-0 flex-col border-r border-line bg-panel transition-[width] duration-150 w-56"><div class="flex items-center border-b border-line justify-between gap-2 px-4 py-4"><a class="min-w-0" aria-label="APITestCenter home" href="/"><span class="block"><span class="block text-sm font-semibold text-ink">APITestCenter</span><span class="block text-xs text-mute">API & performance lab</span></span></a><button type="button" aria-label="Collapse sidebar" aria-expanded="true" class="shrink-0 rounded-md p-1.5 text-mute hover:bg-panel-2 hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div><nav class="flex flex-1 flex-col gap-0.5 p-3"><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-flask-conical" aria-hidden="true"><path d="M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2"></path><path d="M6.453 15h11.094"></path><path d="M8.5 2h7"></path></svg>Test API</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/suite/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-list-checks" aria-hidden="true"><path d="m3 17 2 2 4-4"></path><path d="m3 7 2 2 4-4"></path><path d="M13 6h8"></path><path d="M13 12h8"></path><path d="M13 18h8"></path></svg>Run collection</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/compare/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-git-compare-arrows" aria-hidden="true"><circle cx="5" cy="6" r="3"></circle><path d="M12 6h5a2 2 0 0 1 2 2v7"></path><path d="m15 9-3-3 3-3"></path><circle cx="19" cy="18" r="3"></circle><path d="M12 18H7a2 2 0 0 1-2-2V9"></path><path d="m9 15 3 3-3 3"></path></svg>Compare</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/history/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-history" aria-hidden="true"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path><path d="M12 7v5l4 2"></path></svg>History</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/preview/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-search" aria-hidden="true"><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M4.268 21a2 2 0 0 0 1.727 1H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3"></path><path d="m9 18-1.5-1.5"></path><circle cx="5" cy="14" r="3"></circle></svg>Open report</a></nav><div class="space-y-3 border-t border-line p-4"><button type="button" data-tour="help" title="What the words mean, and the tour" aria-label="Help" class="flex w-full items-center rounded-md border border-line text-xs text-mute hover:border-accent hover:text-ink gap-2 px-2.5 py-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-question-mark" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path></svg>Help · what words mean</button><button type="button" title="Command palette (Ctrl+K)" aria-label="Open command palette" class="flex w-full items-center rounded-md border border-line text-xs text-mute hover:border-accent hover:text-ink gap-2 px-2.5 py-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-command" aria-hidden="true"><path d="M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3"></path></svg>Commands <span class="kbd ml-auto">Ctrl K</span></button><div><div class="grid grid-cols-3 gap-1 rounded-md border border-line bg-panel-2 p-1" role="radiogroup" aria-label="Theme"><button type="button" role="radio" aria-checked="true" aria-label="System" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors bg-panel text-ink shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-monitor" aria-hidden="true"><rect width="20" height="14" x="2" y="3" rx="2"></rect><line x1="8" x2="16" y1="21" y2="21"></line><line x1="12" x2="12" y1="17" y2="21"></line></svg><span>System</span></button><button type="button" role="radio" aria-checked="false" aria-label="Light" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors text-mute hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><span>Light</span></button><button type="button" role="radio" aria-checked="false" aria-label="Dark" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors text-mute hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg><span>Dark</span></button></div></div><div class="text-xs" role="status"><div class="flex items-center gap-2 text-ink"><span class="h-2 w-2 rounded-full bg-mute" aria-hidden="true"></span>Checking engine</div><div class="mt-1 text-xs leading-snug text-mute">…</div><button type="button" class="mt-1 text-xs text-mute hover:text-accent" title="Version, updates, and where your files are">Development build<!-- --> · About</button></div></div></aside><main id="main" class="flex min-h-0 min-w-0 flex-1 flex-col overflow-y-auto"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><div aria-live="polite" class="pointer-events-none fixed right-4 bottom-4 z-50 flex w-[min(24rem,calc(100vw-2rem))] flex-col gap-2"></div><script src="/_next/static/chunks/41ad2nnyaestx.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[87329,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"Providers\"]\n3:I[60459,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"AppShell\"]\n4:I[32428,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"default\"]\n5:I[48549,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"default\"]\n6:I[65709,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[65709,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"ViewportBoundary\"]\nc:I[65709,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"MetadataBoundary\"]\ne:I[49202,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/2i7s5kuurlkr6.css\",\"style\"]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2i7s5kuurlkr6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/3fb2986f7qg9x.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/2od90u8fd_sla.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/13xdai3-mkg7c.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full ibm_plex_sans_324d14c7-module__gA-HIW__variable ibm_plex_mono_1876b2ed-module__4fpJGW__variable\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"h-full font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2i7s5kuurlkr6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"C6zMFzDkVqF8IXny_v7JK\"}\n9:C\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"APITestCenter\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"HTTP API performance testing — configure, run, visualize, export.\"}]]\n"])</script></body></html>
|
package/dist/ui/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en" class="h-full ibm_plex_sans_324d14c7-module__gA-HIW__variable ibm_plex_mono_1876b2ed-module__4fpJGW__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0-898cb98enjv.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/41ad2nnyaestx.js"/><script src="/_next/static/chunks/08w_94tt7q8fk.js" async=""></script><script src="/_next/static/chunks/0ezgetg09gtvn.js" async=""></script><script src="/_next/static/chunks/1l0uy37izo74u.js" async=""></script><script src="/_next/static/chunks/turbopack-2kiaj9_7vlslw.js" async=""></script><script src="/_next/static/chunks/2xls_z5abvl-5.js" async="" crossorigin=""></script><script src="/_next/static/chunks/11nxnz4doxir5.js" async="" crossorigin=""></script><script src="/_next/static/chunks/0e1nwxi9i1ag7.js" async="" crossorigin=""></script><meta name="robots" content="noindex"/><title>APITestCenter</title><meta name="description" content="HTTP API performance testing — configure, run, visualize, export."/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="h-full font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","apitestcenter-theme","system",null,["light","dark"],null,true,true)</script><div class="flex h-dvh overflow-hidden"><a href="#main" class="sr-only z-50 rounded-md bg-accent px-3 py-2 text-sm text-canvas focus:not-sr-only focus:fixed focus:top-2 focus:left-2">Skip to content</a><aside aria-label="Main navigation" class="flex h-full shrink-0 flex-col border-r border-line bg-panel transition-[width] duration-150 w-56"><div class="flex items-center border-b border-line justify-between gap-2 px-4 py-4"><a class="min-w-0" aria-label="APITestCenter home" href="/"><span class="block"><span class="block text-sm font-semibold text-ink">APITestCenter</span><span class="block text-xs text-mute">API & performance lab</span></span></a><button type="button" aria-label="Collapse sidebar" aria-expanded="true" class="shrink-0 rounded-md p-1.5 text-mute hover:bg-panel-2 hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div><nav class="flex flex-1 flex-col gap-0.5 p-3"><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-flask-conical" aria-hidden="true"><path d="M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2"></path><path d="M6.453 15h11.094"></path><path d="M8.5 2h7"></path></svg>Test API</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/suite/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-list-checks" aria-hidden="true"><path d="m3 17 2 2 4-4"></path><path d="m3 7 2 2 4-4"></path><path d="M13 6h8"></path><path d="M13 12h8"></path><path d="M13 18h8"></path></svg>Run collection</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/compare/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-git-compare-arrows" aria-hidden="true"><circle cx="5" cy="6" r="3"></circle><path d="M12 6h5a2 2 0 0 1 2 2v7"></path><path d="m15 9-3-3 3-3"></path><circle cx="19" cy="18" r="3"></circle><path d="M12 18H7a2 2 0 0 1-2-2V9"></path><path d="m9 15 3 3-3 3"></path></svg>Compare</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/history/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-history" aria-hidden="true"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path><path d="M12 7v5l4 2"></path></svg>History</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/preview/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-search" aria-hidden="true"><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M4.268 21a2 2 0 0 0 1.727 1H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3"></path><path d="m9 18-1.5-1.5"></path><circle cx="5" cy="14" r="3"></circle></svg>Open report</a></nav><div class="space-y-3 border-t border-line p-4"><button type="button" data-tour="help" title="What the words mean, and the tour" aria-label="Help" class="flex w-full items-center rounded-md border border-line text-xs text-mute hover:border-accent hover:text-ink gap-2 px-2.5 py-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-question-mark" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path></svg>Help · what words mean</button><button type="button" title="Command palette (Ctrl+K)" aria-label="Open command palette" class="flex w-full items-center rounded-md border border-line text-xs text-mute hover:border-accent hover:text-ink gap-2 px-2.5 py-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-command" aria-hidden="true"><path d="M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3"></path></svg>Commands <span class="kbd ml-auto">Ctrl K</span></button><div><div class="grid grid-cols-3 gap-1 rounded-md border border-line bg-panel-2 p-1" role="radiogroup" aria-label="Theme"><button type="button" role="radio" aria-checked="true" aria-label="System" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors bg-panel text-ink shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-monitor" aria-hidden="true"><rect width="20" height="14" x="2" y="3" rx="2"></rect><line x1="8" x2="16" y1="21" y2="21"></line><line x1="12" x2="12" y1="17" y2="21"></line></svg><span>System</span></button><button type="button" role="radio" aria-checked="false" aria-label="Light" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors text-mute hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><span>Light</span></button><button type="button" role="radio" aria-checked="false" aria-label="Dark" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors text-mute hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg><span>Dark</span></button></div></div><div class="text-xs" role="status"><div class="flex items-center gap-2 text-ink"><span class="h-2 w-2 rounded-full bg-mute" aria-hidden="true"></span>Checking engine</div><div class="mt-1 text-xs leading-snug text-mute">…</div><button type="button" class="mt-1 text-xs text-mute hover:text-accent" title="Version, updates, and where your files are">Development build<!-- --> · About</button></div></div></aside><main id="main" class="flex min-h-0 min-w-0 flex-1 flex-col overflow-y-auto"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><div aria-live="polite" class="pointer-events-none fixed right-4 bottom-4 z-50 flex w-[min(24rem,calc(100vw-2rem))] flex-col gap-2"></div><script src="/_next/static/chunks/41ad2nnyaestx.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[87329,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"Providers\"]\n3:I[60459,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"AppShell\"]\n4:I[32428,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"default\"]\n5:I[48549,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"default\"]\n6:I[65709,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[65709,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"ViewportBoundary\"]\nc:I[65709,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"MetadataBoundary\"]\ne:I[49202,[\"/_next/static/chunks/2xls_z5abvl-5.js\",\"/_next/static/chunks/11nxnz4doxir5.js\",\"/_next/static/chunks/0e1nwxi9i1ag7.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0-898cb98enjv.css\",\"style\"]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0-898cb98enjv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2xls_z5abvl-5.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/11nxnz4doxir5.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0e1nwxi9i1ag7.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full ibm_plex_sans_324d14c7-module__gA-HIW__variable ibm_plex_mono_1876b2ed-module__4fpJGW__variable\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"h-full font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0-898cb98enjv.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"BJz1RrA7HqZwUV22DBTCg\"}\n9:C\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"APITestCenter\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"HTTP API performance testing — configure, run, visualize, export.\"}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><html lang="en" class="h-full ibm_plex_sans_324d14c7-module__gA-HIW__variable ibm_plex_mono_1876b2ed-module__4fpJGW__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/2i7s5kuurlkr6.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/41ad2nnyaestx.js"/><script src="/_next/static/chunks/08w_94tt7q8fk.js" async=""></script><script src="/_next/static/chunks/0ezgetg09gtvn.js" async=""></script><script src="/_next/static/chunks/1l0uy37izo74u.js" async=""></script><script src="/_next/static/chunks/turbopack-2kiaj9_7vlslw.js" async=""></script><script src="/_next/static/chunks/3fb2986f7qg9x.js" async="" crossorigin=""></script><script src="/_next/static/chunks/3qxq1d9u_kohv.js" async="" crossorigin=""></script><script src="/_next/static/chunks/2od90u8fd_sla.js" async="" crossorigin=""></script><script src="/_next/static/chunks/13xdai3-mkg7c.js" async="" crossorigin=""></script><meta name="robots" content="noindex"/><title>APITestCenter</title><meta name="description" content="HTTP API performance testing — configure, run, visualize, export."/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="h-full font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","apitestcenter-theme","system",null,["light","dark"],null,true,true)</script><div class="flex h-dvh overflow-hidden"><a href="#main" class="sr-only z-50 rounded-md bg-accent px-3 py-2 text-sm text-canvas focus:not-sr-only focus:fixed focus:top-2 focus:left-2">Skip to content</a><aside aria-label="Main navigation" class="flex h-full shrink-0 flex-col border-r border-line bg-panel transition-[width] duration-150 w-56"><div class="flex items-center border-b border-line justify-between gap-2 px-4 py-4"><a class="min-w-0" aria-label="APITestCenter home" href="/"><span class="block"><span class="block text-sm font-semibold text-ink">APITestCenter</span><span class="block text-xs text-mute">API & performance lab</span></span></a><button type="button" aria-label="Collapse sidebar" aria-expanded="true" class="shrink-0 rounded-md p-1.5 text-mute hover:bg-panel-2 hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div><nav class="flex flex-1 flex-col gap-0.5 p-3"><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-flask-conical" aria-hidden="true"><path d="M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2"></path><path d="M6.453 15h11.094"></path><path d="M8.5 2h7"></path></svg>Test API</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/suite/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-list-checks" aria-hidden="true"><path d="m3 17 2 2 4-4"></path><path d="m3 7 2 2 4-4"></path><path d="M13 6h8"></path><path d="M13 12h8"></path><path d="M13 18h8"></path></svg>Run collection</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/compare/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-git-compare-arrows" aria-hidden="true"><circle cx="5" cy="6" r="3"></circle><path d="M12 6h5a2 2 0 0 1 2 2v7"></path><path d="m15 9-3-3 3-3"></path><circle cx="19" cy="18" r="3"></circle><path d="M12 18H7a2 2 0 0 1-2-2V9"></path><path d="m9 15 3 3-3 3"></path></svg>Compare</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/history/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-history" aria-hidden="true"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path><path d="M12 7v5l4 2"></path></svg>History</a><a class="flex items-center rounded-md text-sm transition-colors gap-2.5 px-3 py-2 text-mute hover:bg-panel-2 hover:text-ink" href="/preview/"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-search" aria-hidden="true"><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M4.268 21a2 2 0 0 0 1.727 1H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3"></path><path d="m9 18-1.5-1.5"></path><circle cx="5" cy="14" r="3"></circle></svg>Open report</a></nav><div class="space-y-3 border-t border-line p-4"><button type="button" data-tour="help" title="What the words mean, and the tour" aria-label="Help" class="flex w-full items-center rounded-md border border-line text-xs text-mute hover:border-accent hover:text-ink gap-2 px-2.5 py-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-question-mark" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path></svg>Help · what words mean</button><button type="button" title="Command palette (Ctrl+K)" aria-label="Open command palette" class="flex w-full items-center rounded-md border border-line text-xs text-mute hover:border-accent hover:text-ink gap-2 px-2.5 py-1.5"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-command" aria-hidden="true"><path d="M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3"></path></svg>Commands <span class="kbd ml-auto">Ctrl K</span></button><div><div class="grid grid-cols-3 gap-1 rounded-md border border-line bg-panel-2 p-1" role="radiogroup" aria-label="Theme"><button type="button" role="radio" aria-checked="true" aria-label="System" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors bg-panel text-ink shadow-sm"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-monitor" aria-hidden="true"><rect width="20" height="14" x="2" y="3" rx="2"></rect><line x1="8" x2="16" y1="21" y2="21"></line><line x1="12" x2="12" y1="17" y2="21"></line></svg><span>System</span></button><button type="button" role="radio" aria-checked="false" aria-label="Light" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors text-mute hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><span>Light</span></button><button type="button" role="radio" aria-checked="false" aria-label="Dark" disabled="" class="flex items-center justify-center gap-1 rounded px-2 py-1.5 text-xs transition-colors text-mute hover:text-ink"><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg><span>Dark</span></button></div></div><div class="text-xs" role="status"><div class="flex items-center gap-2 text-ink"><span class="h-2 w-2 rounded-full bg-mute" aria-hidden="true"></span>Checking engine</div><div class="mt-1 text-xs leading-snug text-mute">…</div><button type="button" class="mt-1 text-xs text-mute hover:text-accent" title="Version, updates, and where your files are">Development build<!-- --> · About</button></div></div></aside><main id="main" class="flex min-h-0 min-w-0 flex-1 flex-col overflow-y-auto"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><div aria-live="polite" class="pointer-events-none fixed right-4 bottom-4 z-50 flex w-[min(24rem,calc(100vw-2rem))] flex-col gap-2"></div><script src="/_next/static/chunks/41ad2nnyaestx.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[87329,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"Providers\"]\n3:I[60459,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"AppShell\"]\n4:I[32428,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"default\"]\n5:I[48549,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"default\"]\n6:I[65709,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[65709,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"ViewportBoundary\"]\nc:I[65709,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"MetadataBoundary\"]\ne:I[49202,[\"/_next/static/chunks/3fb2986f7qg9x.js\",\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"/_next/static/chunks/2od90u8fd_sla.js\",\"/_next/static/chunks/13xdai3-mkg7c.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/2i7s5kuurlkr6.css\",\"style\"]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2i7s5kuurlkr6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/3fb2986f7qg9x.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/3qxq1d9u_kohv.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/2od90u8fd_sla.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/13xdai3-mkg7c.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"h-full ibm_plex_sans_324d14c7-module__gA-HIW__variable ibm_plex_mono_1876b2ed-module__4fpJGW__variable\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"h-full font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2i7s5kuurlkr6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"C6zMFzDkVqF8IXny_v7JK\"}\n9:C\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"APITestCenter\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"HTTP API performance testing — configure, run, visualize, export.\"}]]\n"])</script></body></html>
|