/** * 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. */ import type { Reporter, TestCase, TestResult } from '@playwright/test/reporter'; export default class PreviousTestsOnWorkerReporter implements Reporter { parallelIndex2TestCase: Map = new Map(); onTestEnd(test: TestCase, result: TestResult) { if (!this.parallelIndex2TestCase.has(result.parallelIndex)) this.parallelIndex2TestCase.set(result.parallelIndex, []); if (!test.ok()) { console.log(`Test ${test.title}(${test.location.file}:${test.location.line})failed on worker ${result.parallelIndex} with error: ${result.error?.message}`); console.log(`The following tests were running before on the same worker:`); for (const test of this.parallelIndex2TestCase.get(result.parallelIndex)!) console.log(` ${test.location.file}:${test.location.line}`); this.parallelIndex2TestCase.delete(result.parallelIndex); } else { this.parallelIndex2TestCase.get(result.parallelIndex)!.push(test); } } }