| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507 |
- "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 teleReceiver_exports = {};
- __export(teleReceiver_exports, {
- TeleReporterReceiver: () => TeleReporterReceiver,
- TeleSuite: () => TeleSuite,
- TeleTestCase: () => TeleTestCase,
- TeleTestResult: () => TeleTestResult,
- baseFullConfig: () => baseFullConfig,
- computeTestCaseOutcome: () => computeTestCaseOutcome,
- parseRegexPatterns: () => parseRegexPatterns,
- serializeRegexPatterns: () => serializeRegexPatterns
- });
- module.exports = __toCommonJS(teleReceiver_exports);
- class TeleReporterReceiver {
- constructor(reporter, options = {}) {
- this.isListing = false;
- this._tests = /* @__PURE__ */ new Map();
- this._rootSuite = new TeleSuite("", "root");
- this._options = options;
- this._reporter = reporter;
- }
- reset() {
- this._rootSuite._entries = [];
- this._tests.clear();
- }
- dispatch(message) {
- const { method, params } = message;
- if (method === "onConfigure") {
- this._onConfigure(params.config);
- return;
- }
- if (method === "onProject") {
- this._onProject(params.project);
- return;
- }
- if (method === "onBegin") {
- this._onBegin();
- return;
- }
- if (method === "onTestBegin") {
- this._onTestBegin(params.testId, params.result);
- return;
- }
- if (method === "onTestEnd") {
- this._onTestEnd(params.test, params.result);
- return;
- }
- if (method === "onStepBegin") {
- this._onStepBegin(params.testId, params.resultId, params.step);
- return;
- }
- if (method === "onAttach") {
- this._onAttach(params.testId, params.resultId, params.attachments);
- return;
- }
- if (method === "onStepEnd") {
- this._onStepEnd(params.testId, params.resultId, params.step);
- return;
- }
- if (method === "onError") {
- this._onError(params.error);
- return;
- }
- if (method === "onStdIO") {
- this._onStdIO(params.type, params.testId, params.resultId, params.data, params.isBase64);
- return;
- }
- if (method === "onEnd")
- return this._onEnd(params.result);
- if (method === "onExit")
- return this._onExit();
- }
- _onConfigure(config) {
- this._rootDir = config.rootDir;
- this._config = this._parseConfig(config);
- this._reporter.onConfigure?.(this._config);
- }
- _onProject(project) {
- let projectSuite = this._options.mergeProjects ? this._rootSuite.suites.find((suite) => suite.project().name === project.name) : void 0;
- if (!projectSuite) {
- projectSuite = new TeleSuite(project.name, "project");
- this._rootSuite._addSuite(projectSuite);
- }
- projectSuite._project = this._parseProject(project);
- for (const suite of project.suites)
- this._mergeSuiteInto(suite, projectSuite);
- }
- _onBegin() {
- this._reporter.onBegin?.(this._rootSuite);
- }
- _onTestBegin(testId, payload) {
- const test = this._tests.get(testId);
- if (this._options.clearPreviousResultsWhenTestBegins)
- test.results = [];
- const testResult = test._createTestResult(payload.id);
- testResult.retry = payload.retry;
- testResult.workerIndex = payload.workerIndex;
- testResult.parallelIndex = payload.parallelIndex;
- testResult.setStartTimeNumber(payload.startTime);
- this._reporter.onTestBegin?.(test, testResult);
- }
- _onTestEnd(testEndPayload, payload) {
- const test = this._tests.get(testEndPayload.testId);
- test.timeout = testEndPayload.timeout;
- test.expectedStatus = testEndPayload.expectedStatus;
- const result = test.results.find((r) => r._id === payload.id);
- result.duration = payload.duration;
- result.status = payload.status;
- result.errors = payload.errors;
- result.error = result.errors?.[0];
- if (!!payload.attachments)
- result.attachments = this._parseAttachments(payload.attachments);
- if (payload.annotations) {
- this._absoluteAnnotationLocationsInplace(payload.annotations);
- result.annotations = payload.annotations;
- test.annotations = payload.annotations;
- }
- this._reporter.onTestEnd?.(test, result);
- result._stepMap = /* @__PURE__ */ new Map();
- }
- _onStepBegin(testId, resultId, payload) {
- const test = this._tests.get(testId);
- const result = test.results.find((r) => r._id === resultId);
- const parentStep = payload.parentStepId ? result._stepMap.get(payload.parentStepId) : void 0;
- const location = this._absoluteLocation(payload.location);
- const step = new TeleTestStep(payload, parentStep, location, result);
- if (parentStep)
- parentStep.steps.push(step);
- else
- result.steps.push(step);
- result._stepMap.set(payload.id, step);
- this._reporter.onStepBegin?.(test, result, step);
- }
- _onStepEnd(testId, resultId, payload) {
- const test = this._tests.get(testId);
- const result = test.results.find((r) => r._id === resultId);
- const step = result._stepMap.get(payload.id);
- step._endPayload = payload;
- step.duration = payload.duration;
- step.error = payload.error;
- this._reporter.onStepEnd?.(test, result, step);
- }
- _onAttach(testId, resultId, attachments) {
- const test = this._tests.get(testId);
- const result = test.results.find((r) => r._id === resultId);
- result.attachments.push(...attachments.map((a) => ({
- name: a.name,
- contentType: a.contentType,
- path: a.path,
- body: a.base64 && globalThis.Buffer ? Buffer.from(a.base64, "base64") : void 0
- })));
- }
- _onError(error) {
- this._reporter.onError?.(error);
- }
- _onStdIO(type, testId, resultId, data, isBase64) {
- const chunk = isBase64 ? globalThis.Buffer ? Buffer.from(data, "base64") : atob(data) : data;
- const test = testId ? this._tests.get(testId) : void 0;
- const result = test && resultId ? test.results.find((r) => r._id === resultId) : void 0;
- if (type === "stdout") {
- result?.stdout.push(chunk);
- this._reporter.onStdOut?.(chunk, test, result);
- } else {
- result?.stderr.push(chunk);
- this._reporter.onStdErr?.(chunk, test, result);
- }
- }
- async _onEnd(result) {
- await this._reporter.onEnd?.({
- status: result.status,
- startTime: new Date(result.startTime),
- duration: result.duration
- });
- }
- _onExit() {
- return this._reporter.onExit?.();
- }
- _parseConfig(config) {
- const result = { ...baseFullConfig, ...config };
- if (this._options.configOverrides) {
- result.configFile = this._options.configOverrides.configFile;
- result.reportSlowTests = this._options.configOverrides.reportSlowTests;
- result.quiet = this._options.configOverrides.quiet;
- result.reporter = [...this._options.configOverrides.reporter];
- }
- return result;
- }
- _parseProject(project) {
- return {
- metadata: project.metadata,
- name: project.name,
- outputDir: this._absolutePath(project.outputDir),
- repeatEach: project.repeatEach,
- retries: project.retries,
- testDir: this._absolutePath(project.testDir),
- testIgnore: parseRegexPatterns(project.testIgnore),
- testMatch: parseRegexPatterns(project.testMatch),
- timeout: project.timeout,
- grep: parseRegexPatterns(project.grep),
- grepInvert: parseRegexPatterns(project.grepInvert),
- dependencies: project.dependencies,
- teardown: project.teardown,
- snapshotDir: this._absolutePath(project.snapshotDir),
- use: project.use
- };
- }
- _parseAttachments(attachments) {
- return attachments.map((a) => {
- return {
- ...a,
- body: a.base64 && globalThis.Buffer ? Buffer.from(a.base64, "base64") : void 0
- };
- });
- }
- _mergeSuiteInto(jsonSuite, parent) {
- let targetSuite = parent.suites.find((s) => s.title === jsonSuite.title);
- if (!targetSuite) {
- targetSuite = new TeleSuite(jsonSuite.title, parent.type === "project" ? "file" : "describe");
- parent._addSuite(targetSuite);
- }
- targetSuite.location = this._absoluteLocation(jsonSuite.location);
- jsonSuite.entries.forEach((e) => {
- if ("testId" in e)
- this._mergeTestInto(e, targetSuite);
- else
- this._mergeSuiteInto(e, targetSuite);
- });
- }
- _mergeTestInto(jsonTest, parent) {
- let targetTest = this._options.mergeTestCases ? parent.tests.find((s) => s.title === jsonTest.title && s.repeatEachIndex === jsonTest.repeatEachIndex) : void 0;
- if (!targetTest) {
- targetTest = new TeleTestCase(jsonTest.testId, jsonTest.title, this._absoluteLocation(jsonTest.location), jsonTest.repeatEachIndex);
- parent._addTest(targetTest);
- this._tests.set(targetTest.id, targetTest);
- }
- this._updateTest(jsonTest, targetTest);
- }
- _updateTest(payload, test) {
- test.id = payload.testId;
- test.location = this._absoluteLocation(payload.location);
- test.retries = payload.retries;
- test.tags = payload.tags ?? [];
- test.annotations = payload.annotations ?? [];
- this._absoluteAnnotationLocationsInplace(test.annotations);
- return test;
- }
- _absoluteAnnotationLocationsInplace(annotations) {
- for (const annotation of annotations) {
- if (annotation.location)
- annotation.location = this._absoluteLocation(annotation.location);
- }
- }
- _absoluteLocation(location) {
- if (!location)
- return location;
- return {
- ...location,
- file: this._absolutePath(location.file)
- };
- }
- _absolutePath(relativePath) {
- if (relativePath === void 0)
- return;
- return this._options.resolvePath ? this._options.resolvePath(this._rootDir, relativePath) : this._rootDir + "/" + relativePath;
- }
- }
- class TeleSuite {
- constructor(title, type) {
- this._entries = [];
- this._requireFile = "";
- this._parallelMode = "none";
- this.title = title;
- this._type = type;
- }
- get type() {
- return this._type;
- }
- get suites() {
- return this._entries.filter((e) => e.type !== "test");
- }
- get tests() {
- return this._entries.filter((e) => e.type === "test");
- }
- entries() {
- return this._entries;
- }
- allTests() {
- const result = [];
- const visit = (suite) => {
- for (const entry of suite.entries()) {
- if (entry.type === "test")
- result.push(entry);
- else
- visit(entry);
- }
- };
- visit(this);
- return result;
- }
- titlePath() {
- const titlePath = this.parent ? this.parent.titlePath() : [];
- if (this.title || this._type !== "describe")
- titlePath.push(this.title);
- return titlePath;
- }
- project() {
- return this._project ?? this.parent?.project();
- }
- _addTest(test) {
- test.parent = this;
- this._entries.push(test);
- }
- _addSuite(suite) {
- suite.parent = this;
- this._entries.push(suite);
- }
- }
- class TeleTestCase {
- constructor(id, title, location, repeatEachIndex) {
- this.fn = () => {
- };
- this.results = [];
- this.type = "test";
- this.expectedStatus = "passed";
- this.timeout = 0;
- this.annotations = [];
- this.retries = 0;
- this.tags = [];
- this.repeatEachIndex = 0;
- this.id = id;
- this.title = title;
- this.location = location;
- this.repeatEachIndex = repeatEachIndex;
- }
- titlePath() {
- const titlePath = this.parent ? this.parent.titlePath() : [];
- titlePath.push(this.title);
- return titlePath;
- }
- outcome() {
- return computeTestCaseOutcome(this);
- }
- ok() {
- const status = this.outcome();
- return status === "expected" || status === "flaky" || status === "skipped";
- }
- _createTestResult(id) {
- const result = new TeleTestResult(this.results.length, id);
- this.results.push(result);
- return result;
- }
- }
- class TeleTestStep {
- constructor(payload, parentStep, location, result) {
- this.duration = -1;
- this.steps = [];
- this._startTime = 0;
- this.title = payload.title;
- this.category = payload.category;
- this.location = location;
- this.parent = parentStep;
- this._startTime = payload.startTime;
- this._result = result;
- }
- titlePath() {
- const parentPath = this.parent?.titlePath() || [];
- return [...parentPath, this.title];
- }
- get startTime() {
- return new Date(this._startTime);
- }
- set startTime(value) {
- this._startTime = +value;
- }
- get attachments() {
- return this._endPayload?.attachments?.map((index) => this._result.attachments[index]) ?? [];
- }
- get annotations() {
- return this._endPayload?.annotations ?? [];
- }
- }
- class TeleTestResult {
- constructor(retry, id) {
- this.parallelIndex = -1;
- this.workerIndex = -1;
- this.duration = -1;
- this.stdout = [];
- this.stderr = [];
- this.attachments = [];
- this.annotations = [];
- this.status = "skipped";
- this.steps = [];
- this.errors = [];
- this._stepMap = /* @__PURE__ */ new Map();
- this._startTime = 0;
- this.retry = retry;
- this._id = id;
- }
- setStartTimeNumber(startTime) {
- this._startTime = startTime;
- }
- get startTime() {
- return new Date(this._startTime);
- }
- set startTime(value) {
- this._startTime = +value;
- }
- }
- const baseFullConfig = {
- forbidOnly: false,
- fullyParallel: false,
- globalSetup: null,
- globalTeardown: null,
- globalTimeout: 0,
- grep: /.*/,
- grepInvert: null,
- maxFailures: 0,
- metadata: {},
- preserveOutput: "always",
- projects: [],
- reporter: [[process.env.CI ? "dot" : "list"]],
- reportSlowTests: {
- max: 5,
- threshold: 3e5
- /* 5 minutes */
- },
- configFile: "",
- rootDir: "",
- quiet: false,
- shard: null,
- updateSnapshots: "missing",
- updateSourceMethod: "patch",
- version: "",
- workers: 0,
- webServer: null
- };
- function serializeRegexPatterns(patterns) {
- if (!Array.isArray(patterns))
- patterns = [patterns];
- return patterns.map((s) => {
- if (typeof s === "string")
- return { s };
- return { r: { source: s.source, flags: s.flags } };
- });
- }
- function parseRegexPatterns(patterns) {
- return patterns.map((p) => {
- if (p.s !== void 0)
- return p.s;
- return new RegExp(p.r.source, p.r.flags);
- });
- }
- function computeTestCaseOutcome(test) {
- let skipped = 0;
- let didNotRun = 0;
- let expected = 0;
- let interrupted = 0;
- let unexpected = 0;
- for (const result of test.results) {
- if (result.status === "interrupted") {
- ++interrupted;
- } else if (result.status === "skipped" && test.expectedStatus === "skipped") {
- ++skipped;
- } else if (result.status === "skipped") {
- ++didNotRun;
- } else if (result.status === test.expectedStatus) {
- ++expected;
- } else {
- ++unexpected;
- }
- }
- if (expected === 0 && unexpected === 0)
- return "skipped";
- if (unexpected === 0)
- return "expected";
- if (expected === 0 && skipped === 0)
- return "unexpected";
- return "flaky";
- }
- // Annotate the CommonJS export names for ESM import in node:
- 0 && (module.exports = {
- TeleReporterReceiver,
- TeleSuite,
- TeleTestCase,
- TeleTestResult,
- baseFullConfig,
- computeTestCaseOutcome,
- parseRegexPatterns,
- serializeRegexPatterns
- });
|