Brunobkr/llama.cpp_AlgMor24_github
ΩFFFΣLLIa • llama.cpp • AlgMor24 ██████╗ ███████╗███████╗███████╗██╗ ██╗ ██╗ █████╗ ██╔═══██╗██╔════╝██╔════╝██╔════╝██║ ██║ ██║██╔══██╗ ██║ ██║█████╗ █████╗ █████╗ ██║ ██║ ██║███████║ ██║ ██║██╔══╝ ██╔══╝ ██╔══╝ ██║ ██║ ██║██╔══██║ ╚██████╔╝██║ ██║ ███████╗███████╗███████╗██║██║ ██║ ╚═════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚══════╝╚═╝╚═╝ ╚═╝ High-Performance LLM / VLM Inference & Autonomous Agentic Ecosystem… See the full description on the dataset page: https://huggingface.co/datasets/Brunobkr/llama.cpp_AlgMor24_github.
03.1k
1"use strict";2var __create = Object.create;3var __defProp = Object.defineProperty;4var __getOwnPropDesc = Object.getOwnPropertyDescriptor;5var __getOwnPropNames = Object.getOwnPropertyNames;6var __getProtoOf = Object.getPrototypeOf;7var __hasOwnProp = Object.prototype.hasOwnProperty;8var __export = (target, all) => {9 for (var name in all)10 __defProp(target, name, { get: all[name], enumerable: true });11};12var __copyProps = (to, from, except, desc) => {13 if (from && typeof from === "object" || typeof from === "function") {14 for (let key of __getOwnPropNames(from))15 if (!__hasOwnProp.call(to, key) && key !== except)16 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });17 }18 return to;19};20var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(21 // If the importer is in node compatibility mode or this is not an ESM22 // file that has been converted to a CommonJS file using a Babel-23 // compatible transform (i.e. "__esModule" has not been set), then set24 // "default" to the CommonJS "module.exports" for node compatibility.25 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,26 mod27));28var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);29var index_exports = {};30__export(index_exports, {31 _baseTest: () => _baseTest,32 defineConfig: () => import_configLoader.defineConfig,33 expect: () => import_expect.expect,34 mergeExpects: () => import_expect2.mergeExpects,35 mergeTests: () => import_testType2.mergeTests,36 test: () => test37});38module.exports = __toCommonJS(index_exports);39var import_fs = __toESM(require("fs"));40var import_path = __toESM(require("path"));41var playwrightLibrary = __toESM(require("playwright-core"));42var import_utils = require("playwright-core/lib/utils");43var import_globals = require("./common/globals");44var import_testType = require("./common/testType");45var import_browserBackend = require("./mcp/test/browserBackend");46var import_expect = require("./matchers/expect");47var import_configLoader = require("./common/configLoader");48var import_testType2 = require("./common/testType");49var import_expect2 = require("./matchers/expect");50const _baseTest = import_testType.rootTestType.test;51(0, import_utils.setBoxedStackPrefixes)([import_path.default.dirname(require.resolve("../package.json"))]);52if (process["__pw_initiator__"]) {53 const originalStackTraceLimit = Error.stackTraceLimit;54 Error.stackTraceLimit = 200;55 try {56 throw new Error("Requiring @playwright/test second time, \nFirst:\n" + process["__pw_initiator__"] + "\n\nSecond: ");57 } finally {58 Error.stackTraceLimit = originalStackTraceLimit;59 }60} else {61 process["__pw_initiator__"] = new Error().stack;62}63const playwrightFixtures = {64 defaultBrowserType: ["chromium", { scope: "worker", option: true, box: true }],65 browserName: [({ defaultBrowserType }, use) => use(defaultBrowserType), { scope: "worker", option: true, box: true }],66 playwright: [async ({}, use) => {67 await use(require("playwright-core"));68 }, { scope: "worker", box: true }],69 headless: [({ launchOptions }, use) => use(launchOptions.headless ?? true), { scope: "worker", option: true, box: true }],70 channel: [({ launchOptions }, use) => use(launchOptions.channel), { scope: "worker", option: true, box: true }],71 launchOptions: [{}, { scope: "worker", option: true, box: true }],72 connectOptions: [async ({ _optionConnectOptions }, use) => {73 await use(connectOptionsFromEnv() || _optionConnectOptions);74 }, { scope: "worker", option: true, box: true }],75 screenshot: ["off", { scope: "worker", option: true, box: true }],76 video: ["off", { scope: "worker", option: true, box: true }],77 trace: ["off", { scope: "worker", option: true, box: true }],78 _browserOptions: [async ({ playwright, headless, channel, launchOptions }, use) => {79 const options = {80 handleSIGINT: false,81 ...launchOptions,82 tracesDir: tracing().tracesDir()83 };84 if (headless !== void 0)85 options.headless = headless;86 if (channel !== void 0)87 options.channel = channel;88 playwright._defaultLaunchOptions = options;89 await use(options);90 playwright._defaultLaunchOptions = void 0;91 }, { scope: "worker", auto: true, box: true }],92 browser: [async ({ playwright, browserName, _browserOptions, connectOptions }, use, testInfo) => {93 if (!["chromium", "firefox", "webkit", "_bidiChromium", "_bidiFirefox"].includes(browserName))94 throw new Error(`Unexpected browserName "${browserName}", must be one of "chromium", "firefox" or "webkit"`);95 if (connectOptions) {96 const browser2 = await playwright[browserName].connect({97 ...connectOptions,98 exposeNetwork: connectOptions.exposeNetwork ?? connectOptions._exposeNetwork,99 headers: {100 // HTTP headers are ASCII only (not UTF-8).101 "x-playwright-launch-options": (0, import_utils.jsonStringifyForceASCII)(_browserOptions),102 ...connectOptions.headers103 }104 });105 await use(browser2);106 await browser2.close({ reason: "Test ended." });107 return;108 }109 const browser = await playwright[browserName].launch();110 await use(browser);111 await browser.close({ reason: "Test ended." });112 }, { scope: "worker", timeout: 0 }],113 acceptDownloads: [({ contextOptions }, use) => use(contextOptions.acceptDownloads ?? true), { option: true, box: true }],114 bypassCSP: [({ contextOptions }, use) => use(contextOptions.bypassCSP ?? false), { option: true, box: true }],115 colorScheme: [({ contextOptions }, use) => use(contextOptions.colorScheme === void 0 ? "light" : contextOptions.colorScheme), { option: true, box: true }],116 deviceScaleFactor: [({ contextOptions }, use) => use(contextOptions.deviceScaleFactor), { option: true, box: true }],117 extraHTTPHeaders: [({ contextOptions }, use) => use(contextOptions.extraHTTPHeaders), { option: true, box: true }],118 geolocation: [({ contextOptions }, use) => use(contextOptions.geolocation), { option: true, box: true }],119 hasTouch: [({ contextOptions }, use) => use(contextOptions.hasTouch ?? false), { option: true, box: true }],120 httpCredentials: [({ contextOptions }, use) => use(contextOptions.httpCredentials), { option: true, box: true }],121 ignoreHTTPSErrors: [({ contextOptions }, use) => use(contextOptions.ignoreHTTPSErrors ?? false), { option: true, box: true }],122 isMobile: [({ contextOptions }, use) => use(contextOptions.isMobile ?? false), { option: true, box: true }],123 javaScriptEnabled: [({ contextOptions }, use) => use(contextOptions.javaScriptEnabled ?? true), { option: true, box: true }],124 locale: [({ contextOptions }, use) => use(contextOptions.locale ?? "en-US"), { option: true, box: true }],125 offline: [({ contextOptions }, use) => use(contextOptions.offline ?? false), { option: true, box: true }],126 permissions: [({ contextOptions }, use) => use(contextOptions.permissions), { option: true, box: true }],127 proxy: [({ contextOptions }, use) => use(contextOptions.proxy), { option: true, box: true }],128 storageState: [({ contextOptions }, use) => use(contextOptions.storageState), { option: true, box: true }],129 clientCertificates: [({ contextOptions }, use) => use(contextOptions.clientCertificates), { option: true, box: true }],130 timezoneId: [({ contextOptions }, use) => use(contextOptions.timezoneId), { option: true, box: true }],131 userAgent: [({ contextOptions }, use) => use(contextOptions.userAgent), { option: true, box: true }],132 viewport: [({ contextOptions }, use) => use(contextOptions.viewport === void 0 ? { width: 1280, height: 720 } : contextOptions.viewport), { option: true, box: true }],133 actionTimeout: [0, { option: true, box: true }],134 testIdAttribute: ["data-testid", { option: true, box: true }],135 navigationTimeout: [0, { option: true, box: true }],136 baseURL: [async ({}, use) => {137 await use(process.env.PLAYWRIGHT_TEST_BASE_URL);138 }, { option: true, box: true }],139 serviceWorkers: [({ contextOptions }, use) => use(contextOptions.serviceWorkers ?? "allow"), { option: true, box: true }],140 contextOptions: [{}, { option: true, box: true }],141 _combinedContextOptions: [async ({142 acceptDownloads,143 bypassCSP,144 clientCertificates,145 colorScheme,146 deviceScaleFactor,147 extraHTTPHeaders,148 hasTouch,149 geolocation,150 httpCredentials,151 ignoreHTTPSErrors,152 isMobile,153 javaScriptEnabled,154 locale,155 offline,156 permissions,157 proxy,158 storageState,159 viewport,160 timezoneId,161 userAgent,162 baseURL,163 contextOptions,164 serviceWorkers165 }, use) => {166 const options = {};167 if (acceptDownloads !== void 0)168 options.acceptDownloads = acceptDownloads;169 if (bypassCSP !== void 0)170 options.bypassCSP = bypassCSP;171 if (colorScheme !== void 0)172 options.colorScheme = colorScheme;173 if (deviceScaleFactor !== void 0)174 options.deviceScaleFactor = deviceScaleFactor;175 if (extraHTTPHeaders !== void 0)176 options.extraHTTPHeaders = extraHTTPHeaders;177 if (geolocation !== void 0)178 options.geolocation = geolocation;179 if (hasTouch !== void 0)180 options.hasTouch = hasTouch;181 if (httpCredentials !== void 0)182 options.httpCredentials = httpCredentials;183 if (ignoreHTTPSErrors !== void 0)184 options.ignoreHTTPSErrors = ignoreHTTPSErrors;185 if (isMobile !== void 0)186 options.isMobile = isMobile;187 if (javaScriptEnabled !== void 0)188 options.javaScriptEnabled = javaScriptEnabled;189 if (locale !== void 0)190 options.locale = locale;191 if (offline !== void 0)192 options.offline = offline;193 if (permissions !== void 0)194 options.permissions = permissions;195 if (proxy !== void 0)196 options.proxy = proxy;197 if (storageState !== void 0)198 options.storageState = storageState;199 if (clientCertificates?.length)200 options.clientCertificates = resolveClientCerticates(clientCertificates);201 if (timezoneId !== void 0)202 options.timezoneId = timezoneId;203 if (userAgent !== void 0)204 options.userAgent = userAgent;205 if (viewport !== void 0)206 options.viewport = viewport;207 if (baseURL !== void 0)208 options.baseURL = baseURL;209 if (serviceWorkers !== void 0)210 options.serviceWorkers = serviceWorkers;211 await use({212 ...contextOptions,213 ...options214 });215 }, { box: true }],216 _setupContextOptions: [async ({ playwright, _combinedContextOptions, actionTimeout, navigationTimeout, testIdAttribute }, use, testInfo) => {217 if (testIdAttribute)218 playwrightLibrary.selectors.setTestIdAttribute(testIdAttribute);219 testInfo.snapshotSuffix = process.platform;220 if ((0, import_utils.debugMode)() === "inspector")221 testInfo._setDebugMode();222 playwright._defaultContextOptions = _combinedContextOptions;223 playwright._defaultContextTimeout = testInfo._pauseOnError() ? 5e3 : actionTimeout || 0;224 playwright._defaultContextNavigationTimeout = navigationTimeout || 0;225 await use();226 playwright._defaultContextOptions = void 0;227 playwright._defaultContextTimeout = void 0;228 playwright._defaultContextNavigationTimeout = void 0;229 }, { auto: "all-hooks-included", title: "context configuration", box: true }],230 _setupArtifacts: [async ({ playwright, screenshot }, use, testInfo) => {231 testInfo.setTimeout(testInfo.project.timeout);232 const artifactsRecorder = new ArtifactsRecorder(playwright, tracing().artifactsDir(), screenshot);233 await artifactsRecorder.willStartTest(testInfo);234 const tracingGroupSteps = [];235 const csiListener = {236 onApiCallBegin: (data, channel) => {237 const testInfo2 = (0, import_globals.currentTestInfo)();238 if (!testInfo2 || data.apiName.includes("setTestIdAttribute") || data.apiName === "tracing.groupEnd")239 return;240 const zone = (0, import_utils.currentZone)().data("stepZone");241 const isExpectCall = data.apiName === "locator._expect" || data.apiName === "frame._expect" || data.apiName === "page._expectScreenshot";242 if (zone && zone.category === "expect" && isExpectCall) {243 if (zone.apiName)244 data.apiName = zone.apiName;245 if (zone.title)246 data.title = zone.title;247 data.stepId = zone.stepId;248 return;249 }250 const step = testInfo2._addStep({251 location: data.frames[0],252 category: "pw:api",253 title: renderTitle(channel.type, channel.method, channel.params, data.title),254 apiName: data.apiName,255 params: channel.params,256 group: (0, import_utils.getActionGroup)({ type: channel.type, method: channel.method })257 }, tracingGroupSteps[tracingGroupSteps.length - 1]);258 data.userData = step;259 data.stepId = step.stepId;260 if (data.apiName === "tracing.group")261 tracingGroupSteps.push(step);262 },263 onApiCallEnd: (data) => {264 if (data.apiName === "tracing.group")265 return;266 if (data.apiName === "tracing.groupEnd") {267 const step2 = tracingGroupSteps.pop();268 step2?.complete({ error: data.error });269 return;270 }271 const step = data.userData;272 step?.complete({ error: data.error });273 },274 onWillPause: ({ keepTestTimeout }) => {275 if (!keepTestTimeout)276 (0, import_globals.currentTestInfo)()?._setDebugMode();277 },278 runAfterCreateBrowserContext: async (context) => {279 await artifactsRecorder?.didCreateBrowserContext(context);280 const testInfo2 = (0, import_globals.currentTestInfo)();281 if (testInfo2)282 attachConnectedHeaderIfNeeded(testInfo2, context.browser());283 },284 runAfterCreateRequestContext: async (context) => {285 await artifactsRecorder?.didCreateRequestContext(context);286 },287 runBeforeCloseBrowserContext: async (context) => {288 await artifactsRecorder?.willCloseBrowserContext(context);289 },290 runBeforeCloseRequestContext: async (context) => {291 await artifactsRecorder?.willCloseRequestContext(context);292 }293 };294 const clientInstrumentation = playwright._instrumentation;295 clientInstrumentation.addListener(csiListener);296 await use();297 clientInstrumentation.removeListener(csiListener);298 await artifactsRecorder.didFinishTest();299 }, { auto: "all-hooks-included", title: "trace recording", box: true, timeout: 0 }],300 _contextFactory: [async ({301 browser,302 video,303 _reuseContext,304 _combinedContextOptions305 /** mitigate dep-via-auto lack of traceability */306 }, use, testInfo) => {307 const testInfoImpl = testInfo;308 const videoMode = normalizeVideoMode(video);309 const captureVideo = shouldCaptureVideo(videoMode, testInfo) && !_reuseContext;310 const contexts = /* @__PURE__ */ new Map();311 let counter = 0;312 await use(async (options) => {313 const hook = testInfoImpl._currentHookType();314 if (hook === "beforeAll" || hook === "afterAll") {315 throw new Error([316 `"context" and "page" fixtures are not supported in "${hook}" since they are created on a per-test basis.`,317 `If you would like to reuse a single page between tests, create context manually with browser.newContext(). See https://aka.ms/playwright/reuse-page for details.`,318 `If you would like to configure your page before each test, do that in beforeEach hook instead.`319 ].join("\n"));320 }321 const videoOptions = captureVideo ? {322 recordVideo: {323 dir: tracing().artifactsDir(),324 size: typeof video === "string" ? void 0 : video.size325 }326 } : {};327 const context = await browser.newContext({ ...videoOptions, ...options });328 if (process.env.PW_CLOCK === "frozen") {329 await context._wrapApiCall(async () => {330 await context.clock.install({ time: 0 });331 await context.clock.pauseAt(1e3);332 }, { internal: true });333 } else if (process.env.PW_CLOCK === "realtime") {334 await context._wrapApiCall(async () => {335 await context.clock.install({ time: 0 });336 }, { internal: true });337 }338 let closed = false;339 const close = async () => {340 if (closed)341 return;342 closed = true;343 const closeReason = testInfo.status === "timedOut" ? "Test timeout of " + testInfo.timeout + "ms exceeded." : "Test ended.";344 await context.close({ reason: closeReason });345 const testFailed = testInfo.status !== testInfo.expectedStatus;346 const preserveVideo = captureVideo && (videoMode === "on" || testFailed && videoMode === "retain-on-failure" || videoMode === "on-first-retry" && testInfo.retry === 1);347 if (preserveVideo) {348 const { pagesWithVideo: pagesForVideo } = contexts.get(context);349 const videos = pagesForVideo.map((p) => p.video()).filter((video2) => !!video2);350 await Promise.all(videos.map(async (v) => {351 try {352 const savedPath = testInfo.outputPath(`video${counter ? "-" + counter : ""}.webm`);353 ++counter;354 await v.saveAs(savedPath);355 testInfo.attachments.push({ name: "video", path: savedPath, contentType: "video/webm" });356 } catch (e) {357 }358 }));359 }360 };361 const contextData = { close, pagesWithVideo: [] };362 if (captureVideo)363 context.on("page", (page) => contextData.pagesWithVideo.push(page));364 contexts.set(context, contextData);365 return { context, close };366 });367 await Promise.all([...contexts.values()].map((data) => data.close()));368 }, { scope: "test", title: "context", box: true }],369 _optionContextReuseMode: ["none", { scope: "worker", option: true, box: true }],370 _optionConnectOptions: [void 0, { scope: "worker", option: true, box: true }],371 _reuseContext: [async ({ video, _optionContextReuseMode }, use) => {372 let mode = _optionContextReuseMode;373 if (process.env.PW_TEST_REUSE_CONTEXT)374 mode = "when-possible";375 const reuse = mode === "when-possible" && normalizeVideoMode(video) === "off";376 await use(reuse);377 }, { scope: "worker", title: "context", box: true }],378 context: async ({ browser, _reuseContext, _contextFactory }, use, testInfo) => {379 const browserImpl = browser;380 attachConnectedHeaderIfNeeded(testInfo, browserImpl);381 if (!_reuseContext) {382 const { context: context2, close } = await _contextFactory();383 testInfo._onDidFinishTestFunctions.unshift(() => (0, import_browserBackend.runBrowserBackendAtEnd)(context2, testInfo.errors[0]?.message));384 await use(context2);385 await close();386 return;387 }388 const context = await browserImpl._wrapApiCall(() => browserImpl._newContextForReuse(), { internal: true });389 testInfo._onDidFinishTestFunctions.unshift(() => (0, import_browserBackend.runBrowserBackendAtEnd)(context, testInfo.errors[0]?.message));390 await use(context);391 const closeReason = testInfo.status === "timedOut" ? "Test timeout of " + testInfo.timeout + "ms exceeded." : "Test ended.";392 await browserImpl._wrapApiCall(() => browserImpl._disconnectFromReusedContext(closeReason), { internal: true });393 },394 page: async ({ context, _reuseContext }, use) => {395 if (!_reuseContext) {396 await use(await context.newPage());397 return;398 }399 let [page] = context.pages();400 if (!page)401 page = await context.newPage();402 await use(page);403 },404 request: async ({ playwright }, use) => {405 const request = await playwright.request.newContext();406 await use(request);407 const hook = test.info()._currentHookType();408 if (hook === "beforeAll") {409 await request.dispose({ reason: [410 `Fixture { request } from beforeAll cannot be reused in a test.`,411 ` - Recommended fix: use a separate { request } in the test.`,412 ` - Alternatively, manually create APIRequestContext in beforeAll and dispose it in afterAll.`,413 `See https://playwright.dev/docs/api-testing#sending-api-requests-from-ui-tests for more details.`414 ].join("\n") });415 } else {416 await request.dispose();417 }418 }419};420function normalizeVideoMode(video) {421 if (!video)422 return "off";423 let videoMode = typeof video === "string" ? video : video.mode;424 if (videoMode === "retry-with-video")425 videoMode = "on-first-retry";426 return videoMode;427}428function shouldCaptureVideo(videoMode, testInfo) {429 return videoMode === "on" || videoMode === "retain-on-failure" || videoMode === "on-first-retry" && testInfo.retry === 1;430}431function normalizeScreenshotMode(screenshot) {432 if (!screenshot)433 return "off";434 return typeof screenshot === "string" ? screenshot : screenshot.mode;435}436function attachConnectedHeaderIfNeeded(testInfo, browser) {437 const connectHeaders = browser?._connection.headers;438 if (!connectHeaders)439 return;440 for (const header of connectHeaders) {441 if (header.name !== "x-playwright-attachment")442 continue;443 const [name, value] = header.value.split("=");444 if (!name || !value)445 continue;446 if (testInfo.attachments.some((attachment) => attachment.name === name))447 continue;448 testInfo.attachments.push({ name, contentType: "text/plain", body: Buffer.from(value) });449 }450}451function resolveFileToConfig(file) {452 const config = test.info().config.configFile;453 if (!config || !file)454 return file;455 if (import_path.default.isAbsolute(file))456 return file;457 return import_path.default.resolve(import_path.default.dirname(config), file);458}459function resolveClientCerticates(clientCertificates) {460 for (const cert of clientCertificates) {461 cert.certPath = resolveFileToConfig(cert.certPath);462 cert.keyPath = resolveFileToConfig(cert.keyPath);463 cert.pfxPath = resolveFileToConfig(cert.pfxPath);464 }465 return clientCertificates;466}467const kTracingStarted = Symbol("kTracingStarted");468function connectOptionsFromEnv() {469 const wsEndpoint = process.env.PW_TEST_CONNECT_WS_ENDPOINT;470 if (!wsEndpoint)471 return void 0;472 const headers = process.env.PW_TEST_CONNECT_HEADERS ? JSON.parse(process.env.PW_TEST_CONNECT_HEADERS) : void 0;473 return {474 wsEndpoint,475 headers,476 exposeNetwork: process.env.PW_TEST_CONNECT_EXPOSE_NETWORK477 };478}479class SnapshotRecorder {480 constructor(_artifactsRecorder, _mode, _name, _contentType, _extension, _doSnapshot) {481 this._artifactsRecorder = _artifactsRecorder;482 this._mode = _mode;483 this._name = _name;484 this._contentType = _contentType;485 this._extension = _extension;486 this._doSnapshot = _doSnapshot;487 this._ordinal = 0;488 this._temporary = [];489 }490 fixOrdinal() {491 this._ordinal = this.testInfo.attachments.filter((a) => a.name === this._name).length;492 }493 shouldCaptureUponFinish() {494 return this._mode === "on" || this._mode === "only-on-failure" && this.testInfo._isFailure() || this._mode === "on-first-failure" && this.testInfo._isFailure() && this.testInfo.retry === 0;495 }496 async maybeCapture() {497 if (!this.shouldCaptureUponFinish())498 return;499 await Promise.all(this._artifactsRecorder._playwright._allPages().map((page) => this._snapshotPage(page, false)));500 }501 async persistTemporary() {502 if (this.shouldCaptureUponFinish()) {503 await Promise.all(this._temporary.map(async (file) => {504 try {505 const path2 = this._createAttachmentPath();506 await import_fs.default.promises.rename(file, path2);507 this._attach(path2);508 } catch {509 }510 }));511 }512 }513 async captureTemporary(context) {514 if (this._mode === "on" || this._mode === "only-on-failure" || this._mode === "on-first-failure" && this.testInfo.retry === 0)515 await Promise.all(context.pages().map((page) => this._snapshotPage(page, true)));516 }517 _attach(screenshotPath) {518 this.testInfo.attachments.push({ name: this._name, path: screenshotPath, contentType: this._contentType });519 }520 _createAttachmentPath() {521 const testFailed = this.testInfo._isFailure();522 const index = this._ordinal + 1;523 ++this._ordinal;524 const path2 = this.testInfo.outputPath(`test-${testFailed ? "failed" : "finished"}-${index}${this._extension}`);525 return path2;526 }527 _createTemporaryArtifact(...name) {528 const file = import_path.default.join(this._artifactsRecorder._artifactsDir, ...name);529 return file;530 }531 async _snapshotPage(page, temporary) {532 if (page[this.testInfo._uniqueSymbol])533 return;534 page[this.testInfo._uniqueSymbol] = true;535 try {536 const path2 = temporary ? this._createTemporaryArtifact((0, import_utils.createGuid)() + this._extension) : this._createAttachmentPath();537 await this._doSnapshot(page, path2);538 if (temporary)539 this._temporary.push(path2);540 else541 this._attach(path2);542 } catch {543 }544 }545 get testInfo() {546 return this._artifactsRecorder._testInfo;547 }548}549class ArtifactsRecorder {550 constructor(playwright, artifactsDir, screenshot) {551 this._playwright = playwright;552 this._artifactsDir = artifactsDir;553 const screenshotOptions = typeof screenshot === "string" ? void 0 : screenshot;554 this._startedCollectingArtifacts = Symbol("startedCollectingArtifacts");555 this._screenshotRecorder = new SnapshotRecorder(this, normalizeScreenshotMode(screenshot), "screenshot", "image/png", ".png", async (page, path2) => {556 await page._wrapApiCall(async () => {557 await page.screenshot({ ...screenshotOptions, timeout: 5e3, path: path2, caret: "initial" });558 }, { internal: true });559 });560 }561 async willStartTest(testInfo) {562 this._testInfo = testInfo;563 testInfo._onDidFinishTestFunctions.push(() => this.didFinishTestFunction());564 this._screenshotRecorder.fixOrdinal();565 await Promise.all(this._playwright._allContexts().map((context) => this.didCreateBrowserContext(context)));566 const existingApiRequests = Array.from(this._playwright.request._contexts);567 await Promise.all(existingApiRequests.map((c) => this.didCreateRequestContext(c)));568 }569 async didCreateBrowserContext(context) {570 await this._startTraceChunkOnContextCreation(context, context.tracing);571 }572 async willCloseBrowserContext(context) {573 await this._stopTracing(context, context.tracing);574 await this._screenshotRecorder.captureTemporary(context);575 await this._takePageSnapshot(context);576 }577 async _takePageSnapshot(context) {578 if (process.env.PLAYWRIGHT_NO_COPY_PROMPT)579 return;580 if (this._testInfo.errors.length === 0)581 return;582 if (this._pageSnapshot)583 return;584 const page = context.pages()[0];585 if (!page)586 return;587 try {588 await page._wrapApiCall(async () => {589 this._pageSnapshot = await page._snapshotForAI({ timeout: 5e3 });590 }, { internal: true });591 } catch {592 }593 }594 async didCreateRequestContext(context) {595 await this._startTraceChunkOnContextCreation(context, context._tracing);596 }597 async willCloseRequestContext(context) {598 await this._stopTracing(context, context._tracing);599 }600 async didFinishTestFunction() {601 await this._screenshotRecorder.maybeCapture();602 }603 async didFinishTest() {604 await this.didFinishTestFunction();605 const leftoverContexts = this._playwright._allContexts();606 const leftoverApiRequests = Array.from(this._playwright.request._contexts);607 await Promise.all(leftoverContexts.map(async (context2) => {608 await this._stopTracing(context2, context2.tracing);609 }).concat(leftoverApiRequests.map(async (context2) => {610 await this._stopTracing(context2, context2._tracing);611 })));612 await this._screenshotRecorder.persistTemporary();613 const context = leftoverContexts[0];614 if (context)615 await this._takePageSnapshot(context);616 if (this._pageSnapshot && this._testInfo.errors.length > 0 && !this._testInfo.attachments.some((a) => a.name === "error-context")) {617 const lines = [618 "# Page snapshot",619 "",620 "```yaml",621 this._pageSnapshot,622 "```"623 ];624 const filePath = this._testInfo.outputPath("error-context.md");625 await import_fs.default.promises.writeFile(filePath, lines.join("\n"), "utf8");626 this._testInfo._attach({627 name: "error-context",628 contentType: "text/markdown",629 path: filePath630 }, void 0);631 }632 }633 async _startTraceChunkOnContextCreation(channelOwner, tracing2) {634 await channelOwner._wrapApiCall(async () => {635 const options = this._testInfo._tracing.traceOptions();636 if (options) {637 const title = this._testInfo._tracing.traceTitle();638 const name = this._testInfo._tracing.generateNextTraceRecordingName();639 if (!tracing2[kTracingStarted]) {640 await tracing2.start({ ...options, title, name });641 tracing2[kTracingStarted] = true;642 } else {643 await tracing2.startChunk({ title, name });644 }645 } else {646 if (tracing2[kTracingStarted]) {647 tracing2[kTracingStarted] = false;648 await tracing2.stop();649 }650 }651 }, { internal: true });652 }653 async _stopTracing(channelOwner, tracing2) {654 await channelOwner._wrapApiCall(async () => {655 if (tracing2[this._startedCollectingArtifacts])656 return;657 tracing2[this._startedCollectingArtifacts] = true;658 if (this._testInfo._tracing.traceOptions() && tracing2[kTracingStarted])659 await tracing2.stopChunk({ path: this._testInfo._tracing.maybeGenerateNextTraceRecordingPath() });660 }, { internal: true });661 }662}663function renderTitle(type, method, params, title) {664 const prefix = (0, import_utils.renderTitleForCall)({ title, type, method, params });665 let selector;666 if (params?.["selector"] && typeof params.selector === "string")667 selector = (0, import_utils.asLocatorDescription)("javascript", params.selector);668 return prefix + (selector ? ` ${selector}` : "");669}670function tracing() {671 return test.info()._tracing;672}673const test = _baseTest.extend(playwrightFixtures);674// Annotate the CommonJS export names for ESM import in node:6750 && (module.exports = {676 _baseTest,677 defineConfig,678 expect,679 mergeExpects,680 mergeTests,681 test682});683 