@validate.qa/runner 1.0.101 → 1.0.102
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/README.md +3 -0
- package/dist/{chunk-IGXGSDE3.mjs → chunk-3JM6XTSZ.mjs} +1298 -384
- package/dist/{chunk-BBTK6OX6.mjs → chunk-4WLP3RWN.mjs} +383 -11
- package/dist/{chunk-XZUUBMP3.mjs → chunk-5DFBEL72.mjs} +1 -1
- package/dist/{chunk-M3VZGHZQ.mjs → chunk-BXLEPT4M.mjs} +20 -10
- package/dist/{chunk-FQUH2PU2.mjs → chunk-CBVHPYVJ.mjs} +62 -2
- package/dist/{chunk-4SZC5ZX3.mjs → chunk-DN3O6EYT.mjs} +19461 -4077
- package/dist/{chunk-SN3PN4G4.mjs → chunk-E2RRAE27.mjs} +6 -2
- package/dist/{chunk-2OKZY3WN.mjs → chunk-E2VEMBQQ.mjs} +2 -2
- package/dist/{chunk-CYWHPXNZ.mjs → chunk-HJ6FKHMM.mjs} +1 -1
- package/dist/{chunk-CO5KHIVX.mjs → chunk-PWFWMVZU.mjs} +1 -1
- package/dist/{chunk-TPU42VH2.mjs → chunk-ZZYBRIBT.mjs} +10 -5
- package/dist/cli.js +135916 -118926
- package/dist/cli.mjs +349 -101
- package/dist/credential-mcp-server.js +1327 -348
- package/dist/credential-mcp-server.mjs +3 -3
- package/dist/discovery-mcp-server.js +1328 -400
- package/dist/discovery-mcp-server.mjs +4 -4
- package/dist/dist-52M5RDZ6.mjs +17 -0
- package/dist/inbox-mcp-server.js +1579 -605
- package/dist/inbox-mcp-server.mjs +3 -3
- package/dist/route-seed-worker.js +1244 -330
- package/dist/route-seed-worker.mjs +4 -4
- package/dist/run-write-guard-preload.js +1622 -332
- package/dist/run-write-guard-preload.mjs +4 -4
- package/dist/run-write-guard.js +1622 -332
- package/dist/run-write-guard.mjs +3 -3
- package/dist/spec-driver.js +1 -1
- package/dist/spec-driver.mjs +1 -1
- package/package.json +3 -2
- package/dist/dist-VTPBY2C4.mjs +0 -17
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
dist_exports,
|
|
3
3
|
init_dist
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-3JM6XTSZ.mjs";
|
|
5
5
|
import {
|
|
6
6
|
__commonJS,
|
|
7
7
|
__esm,
|
|
@@ -67455,23 +67455,41 @@ var require_harness_init_script = __commonJS({
|
|
|
67455
67455
|
exports.isHarnessInitConsoleLine = isHarnessInitConsoleLine;
|
|
67456
67456
|
exports.stripHarnessConsoleEntries = stripHarnessConsoleEntries;
|
|
67457
67457
|
var node_crypto_1 = __require("crypto");
|
|
67458
|
+
var shared_1 = (init_dist(), __toCommonJS(dist_exports));
|
|
67458
67459
|
exports.HARNESS_INIT_SOURCE_URL = `vqa-harness-init-${(0, node_crypto_1.randomBytes)(4).toString("hex")}.js`;
|
|
67460
|
+
var TRANSITION_LOOP_LIMIT = 8;
|
|
67461
|
+
var TRANSITION_LOOP_WINDOW_MS = 1e3;
|
|
67459
67462
|
function withHarnessSourceUrl(content) {
|
|
67460
67463
|
return `${content}
|
|
67461
67464
|
//# sourceURL=${exports.HARNESS_INIT_SOURCE_URL}`;
|
|
67462
67465
|
}
|
|
67463
67466
|
function buildAnimationDisablingSource(opts) {
|
|
67467
|
+
const finishTransitions = opts.finishTransitions ?? (0, shared_1.parseBoolFlag)(process.env.HARNESS_FINISH_CSS_TRANSITIONS);
|
|
67468
|
+
const css = finishTransitions ? "*, *::before, *::after { animation-duration: 0s !important; animation-delay: 0s !important; }" : "*, *::before, *::after { transition-duration: 0s !important; animation-duration: 0s !important; transition-delay: 0s !important; animation-delay: 0s !important; }";
|
|
67464
67469
|
return withHarnessSourceUrl(`(() => {
|
|
67465
67470
|
// Layer 1: CSS transitions and animations - instant, not removed
|
|
67466
67471
|
// (duration 0s preserves final state; 'none' would prevent keyframes from completing)
|
|
67472
|
+
// The rule goes in a constructed stylesheet on document.adoptedStyleSheets, which adds no node to the DOM:
|
|
67473
|
+
// a <style> element changed what the test sees (locator('style') and 'head > *' counts, document.styleSheets,
|
|
67474
|
+
// an iframe's empty head), so a spec stock Playwright passes failed. The <style> is the fallback for a
|
|
67475
|
+
// browser with no constructable stylesheets.
|
|
67476
|
+
let adopted = false;
|
|
67467
67477
|
try {
|
|
67478
|
+
if (typeof CSSStyleSheet === 'function' && typeof Document === 'function' && 'adoptedStyleSheets' in Document.prototype) {
|
|
67479
|
+
const sheet = new CSSStyleSheet();
|
|
67480
|
+
sheet.replaceSync(${JSON.stringify(css)});
|
|
67481
|
+
document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];
|
|
67482
|
+
adopted = true;
|
|
67483
|
+
}
|
|
67484
|
+
} catch (e) {}
|
|
67485
|
+
if (!adopted) try {
|
|
67468
67486
|
let applied = false;
|
|
67469
67487
|
const apply = () => {
|
|
67470
67488
|
if (applied) return true;
|
|
67471
67489
|
const root = document.head || document.documentElement;
|
|
67472
67490
|
if (!root) return false;
|
|
67473
67491
|
const style = document.createElement('style');
|
|
67474
|
-
style.textContent =
|
|
67492
|
+
style.textContent = ${JSON.stringify(css)};
|
|
67475
67493
|
root.appendChild(style);
|
|
67476
67494
|
applied = true;
|
|
67477
67495
|
return true;
|
|
@@ -67493,6 +67511,48 @@ ${opts.hideWebdriver ? `
|
|
|
67493
67511
|
try {
|
|
67494
67512
|
Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
|
|
67495
67513
|
} catch (e) {}
|
|
67514
|
+
` : ""}
|
|
67515
|
+
${finishTransitions ? `
|
|
67516
|
+
// Layer 1b: CSS transitions run, and are finished as they start, so transitionend fires.
|
|
67517
|
+
// - finish() is deferred to a task: called inside the transitionrun dispatch (or a microtask of it) after a
|
|
67518
|
+
// real input event, Chromium finishes the transition but never fires its transitionstart/transitionend.
|
|
67519
|
+
// - setTimeout and performance.now are the ones present when this script runs, before the page's own
|
|
67520
|
+
// scripts: fake timers the page installs later cannot hold a finish back.
|
|
67521
|
+
// - The subtree is walked only for a pseudo-element's transition (its animations hang off the element).
|
|
67522
|
+
// - An element whose same transition restarts more than ${TRANSITION_LOOP_LIMIT} times within ${TRANSITION_LOOP_WINDOW_MS} ms (an app that starts it again on
|
|
67523
|
+
// each transitionend: carousel, pulse) is left to run at its own pace from then on, instead of cycling at
|
|
67524
|
+
// frame rate for the rest of the run.
|
|
67525
|
+
try {
|
|
67526
|
+
const st = setTimeout;
|
|
67527
|
+
const perf = typeof performance === 'object' && performance && typeof performance.now === 'function' ? performance : null;
|
|
67528
|
+
const now = perf ? perf.now.bind(perf) : Date.now;
|
|
67529
|
+
const seen = new WeakMap();
|
|
67530
|
+
const looping = (el, key) => {
|
|
67531
|
+
let byKey = seen.get(el);
|
|
67532
|
+
if (!byKey) { byKey = new Map(); seen.set(el, byKey); }
|
|
67533
|
+
const t = now();
|
|
67534
|
+
let s = byKey.get(key);
|
|
67535
|
+
if (s && s.loop) return true;
|
|
67536
|
+
if (!s || t - s.since > ${TRANSITION_LOOP_WINDOW_MS}) { s = { n: 0, since: t, loop: false }; byKey.set(key, s); }
|
|
67537
|
+
s.n += 1;
|
|
67538
|
+
if (s.n > ${TRANSITION_LOOP_LIMIT}) s.loop = true;
|
|
67539
|
+
return s.loop;
|
|
67540
|
+
};
|
|
67541
|
+
window.addEventListener('transitionrun', (ev) => {
|
|
67542
|
+
try {
|
|
67543
|
+
const el = ev && ev.target;
|
|
67544
|
+
if (!el || typeof el.getAnimations !== 'function' || typeof CSSTransition !== 'function') return;
|
|
67545
|
+
const pseudo = ev.pseudoElement || '';
|
|
67546
|
+
if (looping(el, ev.propertyName + '|' + pseudo)) return;
|
|
67547
|
+
for (const a of (pseudo ? el.getAnimations({ subtree: true }) : el.getAnimations())) {
|
|
67548
|
+
if (a instanceof CSSTransition && a.transitionProperty === ev.propertyName && a.effect
|
|
67549
|
+
&& a.effect.target === el && (a.effect.pseudoElement || '') === pseudo) {
|
|
67550
|
+
st(() => { try { a.finish(); } catch (e) {} }, 0);
|
|
67551
|
+
}
|
|
67552
|
+
}
|
|
67553
|
+
} catch (e) {}
|
|
67554
|
+
}, true);
|
|
67555
|
+
} catch (e) {}
|
|
67496
67556
|
` : ""}
|
|
67497
67557
|
// Layer 2: Web Animations API - make instant instead of no-op
|
|
67498
67558
|
// (preserves animation completion callbacks that app code may depend on)
|