Add SPA session validation and buglist, update migration docs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-12-03 21:28:08 +00:00
parent 9be3dfc14e
commit cff287e870
24169 changed files with 10223 additions and 7120 deletions

6
node_modules/playwright/lib/common/config.js generated vendored Normal file → Executable file
View File

@@ -69,6 +69,11 @@ class FullConfigInternal {
this.globalSetups = (Array.isArray(userConfig.globalSetup) ? userConfig.globalSetup : [userConfig.globalSetup]).map((s) => resolveScript(s, configDir)).filter((script) => script !== void 0);
this.globalTeardowns = (Array.isArray(userConfig.globalTeardown) ? userConfig.globalTeardown : [userConfig.globalTeardown]).map((s) => resolveScript(s, configDir)).filter((script) => script !== void 0);
userConfig.metadata = userConfig.metadata || {};
const globalTags = Array.isArray(userConfig.tag) ? userConfig.tag : userConfig.tag ? [userConfig.tag] : [];
for (const tag of globalTags) {
if (tag[0] !== "@")
throw new Error(`Tag must start with "@" symbol, got "${tag}" instead.`);
}
this.config = {
configFile: resolvedConfigFile,
rootDir: pathResolve(configDir, userConfig.testDir) || configDir,
@@ -91,6 +96,7 @@ class FullConfigInternal {
quiet: takeFirst(configCLIOverrides.quiet, userConfig.quiet, false),
projects: [],
shard: takeFirst(configCLIOverrides.shard, userConfig.shard, null),
tags: globalTags,
updateSnapshots: takeFirst(configCLIOverrides.updateSnapshots, userConfig.updateSnapshots, "missing"),
updateSourceMethod: takeFirst(configCLIOverrides.updateSourceMethod, userConfig.updateSourceMethod, "patch"),
version: require("../../package.json").version,

0
node_modules/playwright/lib/common/configLoader.js generated vendored Normal file → Executable file
View File

0
node_modules/playwright/lib/common/esmLoaderHost.js generated vendored Normal file → Executable file
View File

9
node_modules/playwright/lib/common/expectBundle.js generated vendored Normal file → Executable file
View File

@@ -22,17 +22,11 @@ __export(expectBundle_exports, {
EXPECTED_COLOR: () => EXPECTED_COLOR,
INVERTED_COLOR: () => INVERTED_COLOR,
RECEIVED_COLOR: () => RECEIVED_COLOR,
asymmetricMatchers: () => asymmetricMatchers,
expect: () => expect,
matcherUtils: () => matcherUtils,
mock: () => mock,
printReceived: () => printReceived
});
module.exports = __toCommonJS(expectBundle_exports);
const expect = require("./expectBundleImpl").expect;
const mock = require("./expectBundleImpl").mock;
const asymmetricMatchers = require("./expectBundleImpl").asymmetricMatchers;
const matcherUtils = require("./expectBundleImpl").matcherUtils;
const EXPECTED_COLOR = require("./expectBundleImpl").EXPECTED_COLOR;
const INVERTED_COLOR = require("./expectBundleImpl").INVERTED_COLOR;
const RECEIVED_COLOR = require("./expectBundleImpl").RECEIVED_COLOR;
@@ -44,9 +38,6 @@ const printReceived = require("./expectBundleImpl").printReceived;
EXPECTED_COLOR,
INVERTED_COLOR,
RECEIVED_COLOR,
asymmetricMatchers,
expect,
matcherUtils,
mock,
printReceived
});

504
node_modules/playwright/lib/common/expectBundleImpl.js generated vendored Normal file → Executable file

File diff suppressed because one or more lines are too long

0
node_modules/playwright/lib/common/fixtures.js generated vendored Normal file → Executable file
View File

0
node_modules/playwright/lib/common/globals.js generated vendored Normal file → Executable file
View File

0
node_modules/playwright/lib/common/ipc.js generated vendored Normal file → Executable file
View File

0
node_modules/playwright/lib/common/poolBuilder.js generated vendored Normal file → Executable file
View File

0
node_modules/playwright/lib/common/process.js generated vendored Normal file → Executable file
View File

0
node_modules/playwright/lib/common/suiteUtils.js generated vendored Normal file → Executable file
View File

0
node_modules/playwright/lib/common/test.js generated vendored Normal file → Executable file
View File

5
node_modules/playwright/lib/common/testLoader.js generated vendored Normal file → Executable file
View File

@@ -42,12 +42,13 @@ var import_transform = require("../transform/transform");
var import_util2 = require("../util");
const defaultTimeout = 3e4;
const cachedFileSuites = /* @__PURE__ */ new Map();
async function loadTestFile(file, rootDir, testErrors) {
async function loadTestFile(file, config, testErrors) {
if (cachedFileSuites.has(file))
return cachedFileSuites.get(file);
const suite = new import_test.Suite(import_path.default.relative(rootDir, file) || import_path.default.basename(file), "file");
const suite = new import_test.Suite(import_path.default.relative(config.config.rootDir, file) || import_path.default.basename(file), "file");
suite._requireFile = file;
suite.location = { file, line: 0, column: 0 };
suite._tags = [...config.config.tags];
(0, import_globals.setCurrentlyLoadingFileSuite)(suite);
if (!(0, import_globals.isWorkerProcess)()) {
(0, import_compilationCache.startCollectingFileDeps)();

15
node_modules/playwright/lib/common/testType.js generated vendored Normal file → Executable file
View File

@@ -29,6 +29,7 @@ var import_globals = require("./globals");
var import_test = require("./test");
var import_expect = require("../matchers/expect");
var import_transform = require("../transform/transform");
var import_validators = require("./validators");
const testTypeSymbol = Symbol("testType");
class TestTypeImpl {
constructor(fixtures) {
@@ -96,7 +97,7 @@ class TestTypeImpl {
body = fn;
details = fnOrDetails;
}
const validatedDetails = validateTestDetails(details, location);
const validatedDetails = (0, import_validators.validateTestDetails)(details, location);
const test = new import_test.TestCase(title, body, this, location);
test._requireFile = suite._requireFile;
test.annotations.push(...validatedDetails.annotations);
@@ -130,7 +131,7 @@ class TestTypeImpl {
details = fnOrDetails;
body = fn;
}
const validatedDetails = validateTestDetails(details, location);
const validatedDetails = (0, import_validators.validateTestDetails)(details, location);
const child = new import_test.Suite(title, "describe");
child._requireFile = suite._requireFile;
child.location = location;
@@ -276,16 +277,6 @@ See https://playwright.dev/docs/intro for more information about Playwright Test
);
}
}
function validateTestDetails(details, location) {
const originalAnnotations = Array.isArray(details.annotation) ? details.annotation : details.annotation ? [details.annotation] : [];
const annotations = originalAnnotations.map((annotation) => ({ ...annotation, location }));
const tags = Array.isArray(details.tag) ? details.tag : details.tag ? [details.tag] : [];
for (const tag of tags) {
if (tag[0] !== "@")
throw new Error(`Tag must start with "@" symbol, got "${tag}" instead.`);
}
return { annotations, tags };
}
const rootTestType = new TestTypeImpl([]);
function mergeTests(...tests) {
let result = rootTestType;

68
node_modules/playwright/lib/common/validators.js generated vendored Executable file
View File

@@ -0,0 +1,68 @@
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var validators_exports = {};
__export(validators_exports, {
validateTestAnnotation: () => validateTestAnnotation,
validateTestDetails: () => validateTestDetails
});
module.exports = __toCommonJS(validators_exports);
var import_utilsBundle = require("playwright-core/lib/utilsBundle");
const testAnnotationSchema = import_utilsBundle.zod.object({
type: import_utilsBundle.zod.string(),
description: import_utilsBundle.zod.string().optional()
});
const testDetailsSchema = import_utilsBundle.zod.object({
tag: import_utilsBundle.zod.union([
import_utilsBundle.zod.string().optional(),
import_utilsBundle.zod.array(import_utilsBundle.zod.string())
]).transform((val) => Array.isArray(val) ? val : val !== void 0 ? [val] : []).refine((val) => val.every((v) => v.startsWith("@")), {
message: "Tag must start with '@'"
}),
annotation: import_utilsBundle.zod.union([
testAnnotationSchema,
import_utilsBundle.zod.array(testAnnotationSchema).optional()
]).transform((val) => Array.isArray(val) ? val : val !== void 0 ? [val] : [])
});
function validateTestAnnotation(annotation) {
try {
return testAnnotationSchema.parse(annotation);
} catch (error) {
throwZodError(error);
}
}
function validateTestDetails(details, location) {
try {
const parsedDetails = testDetailsSchema.parse(details);
return {
annotations: parsedDetails.annotation.map((a) => ({ ...a, location })),
tags: parsedDetails.tag,
location
};
} catch (error) {
throwZodError(error);
}
}
function throwZodError(error) {
throw new Error(error.issues.map((i) => i.message).join("\n"));
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
validateTestAnnotation,
validateTestDetails
});