| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.Runner = void 0;var _utils = require("playwright-core/lib/utils");var _webServerPlugin = require("../plugins/webServerPlugin");var _projectUtils = require("./projectUtils");var _reporters = require("./reporters");var _tasks = require("./tasks");var _utilsBundle = require("playwright-core/lib/utilsBundle");var _watchMode = require("./watchMode");var _uiMode = require("./uiMode");var _internalReporter = require("../reporters/internalReporter");var _multiplexer = require("../reporters/multiplexer");/** * Copyright 2019 Google Inc. All rights reserved. * Modifications copyright (c) Microsoft Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */class Runner {  constructor(config) {    this._config = void 0;    this._config = config;  }  async listTestFiles(projectNames) {    const projects = (0, _projectUtils.filterProjects)(this._config.projects, projectNames);    const report = {      projects: []    };    for (const project of projects) {      report.projects.push({        name: project.project.name,        testDir: project.project.testDir,        use: {          testIdAttribute: project.project.use.testIdAttribute        },        files: await (0, _projectUtils.collectFilesForProject)(project)      });    }    return report;  }  async runAllTests() {    const config = this._config;    const listOnly = config.cliListOnly;    const deadline = config.config.globalTimeout ? (0, _utils.monotonicTime)() + config.config.globalTimeout : 0;    // Legacy webServer support.    (0, _webServerPlugin.webServerPluginsForConfig)(config).forEach(p => config.plugins.push({      factory: p    }));    const reporter = new _internalReporter.InternalReporter(new _multiplexer.Multiplexer(await (0, _reporters.createReporters)(config, listOnly ? 'list' : 'run')));    const taskRunner = listOnly ? (0, _tasks.createTaskRunnerForList)(config, reporter, 'in-process', {      failOnLoadErrors: true    }) : (0, _tasks.createTaskRunner)(config, reporter);    const testRun = new _tasks.TestRun(config, reporter);    reporter.onConfigure(config.config);    if (!listOnly && config.ignoreSnapshots) {      reporter.onStdOut(_utilsBundle.colors.dim(['NOTE: running with "ignoreSnapshots" option. All of the following asserts are silently ignored:', '- expect().toMatchSnapshot()', '- expect().toHaveScreenshot()', ''].join('\n')));    }    const taskStatus = await taskRunner.run(testRun, deadline);    let status = testRun.failureTracker.result();    if (status === 'passed' && taskStatus !== 'passed') status = taskStatus;    const modifiedResult = await reporter.onEnd({      status    });    if (modifiedResult && modifiedResult.status) status = modifiedResult.status;    await reporter.onExit();    // Calling process.exit() might truncate large stdout/stderr output.    // See https://github.com/nodejs/node/issues/6456.    // See https://github.com/nodejs/node/issues/12921    await new Promise(resolve => process.stdout.write('', () => resolve()));    await new Promise(resolve => process.stderr.write('', () => resolve()));    return status;  }  async watchAllTests() {    const config = this._config;    (0, _webServerPlugin.webServerPluginsForConfig)(config).forEach(p => config.plugins.push({      factory: p    }));    return await (0, _watchMode.runWatchModeLoop)(config);  }  async uiAllTests(options) {    const config = this._config;    (0, _webServerPlugin.webServerPluginsForConfig)(config).forEach(p => config.plugins.push({      factory: p    }));    return await (0, _uiMode.runUIMode)(config, options);  }}exports.Runner = Runner;
 |