Issue 1:
I am trying to run my tests on github actions . My config file is within the tests/playwright folder in the repo.When I run the workflow , the action uses just one worker as opposed to 90% specified in the playwright.config.ts file. If I change the worker index to a number say 10, it uses the given number of workers to execute the tests.

System info

Playwright Version: [v1.35]

Operating System: [Ubuntu 20]

Browser: [All, Chromium, Firefox, WebKit]

Other info:

Source code

workflow:
name: "Tests Example"
on:
schedule:
- cron: '0 6 * * 1'
workflow_dispatch:
jobs:
Playwright:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Setup node
uses: actions/setup-node@v3
- name: Install dependencies
working-directory: tests/playwright
run:
npm ci
- name: Install Other dependencies
run: npx playwright install-deps
- name: Install Browsers
working-directory: tests/playwright
run: npx playwright install
- name: Run Playwright tests
working-directory: tests/playwright
run: npx playwright tests
- name: Upload test results
if: always()
uses: actions/upload-artifact@v3
with:
name: playwright-results
path: tests/playwright/playwright-report

Config file

import { PlaywrightTestConfig, devices } from "@playwright/test";

const config: PlaywrightTestConfig = {
fullyParallel: true,
projects: [
{
name: "Chrome",
use: {
headless: true,
browserName: "chromium",
ignoreHTTPSErrors: true,
screenshot: {
mode: "only-on-failure",
fullPage: true,
},
video: "retain-on-failure",
},
retries: 1,
},
{
name: "Firefox",
use: {
headless: true,
browserName: "firefox",
ignoreHTTPSErrors: true,
screenshot: {
mode: "only-on-failure",
fullPage: true,
},
video: "retain-on-failure",
},
retries: 1,
},
{
name: "webkit",
use: {
headless: true,
browserName: "webkit",
ignoreHTTPSErrors: true,
screenshot: {
mode: "only-on-failure",
fullPage: true,
},
video: "retain-on-failure",
},
retries: 1,
},
{
name: "edge",
use: {
headless: true,
channel: "msedge",
ignoreHTTPSErrors: true,
screenshot: {
mode: "only-on-failure",
fullPage: true,
},
video: "retain-on-failure",
},
retries: 1,
},
{
name: "iPhone_Safari",
use: {
headless: true,
channel: "webkit",
...devices["iPhone 13 Pro"],
ignoreHTTPSErrors: true,
screenshot: {
mode: "only-on-failure",
fullPage: true,
},
video: "retain-on-failure",
},
retries: 1,
},
{
name: "Android",
use: {
headless: true,
ignoreHTTPSErrors: true,
screenshot: "only-on-failure",
video: "retain-on-failure",
channel: "chromium",
...devices["Pixel 2"],
},
retries: 1,
},
],
use: {
headless: true,
screenshot: {
mode: "only-on-failure",
fullPage: true,
},
video: "retain-on-failure",
},

expect: {
timeout: 10000,
},
timeout: 250000,
globalSetup: "utils/globalSetup.ts",
globalTeardown: "global-teardown.ts",
reporter: process.env.CI ?
[["list"], ["html"]] : [["list"], ["html"],
[
"allure-playwright",
{
detail: true,
outputFolder: "allure-results",
suiteTitle: false,
},
],
],
workers: process.env.CI ? "90%" : "70%",
};

export default config;

Steps

[Run the workflow]

Expected

The github workflow should be able to determine workers based on specified config file

Actual

The tests run but just with one worker instead of 90% of logical CPU cores. The workflow works as expected if the worker index is a definite number e.g. 10/6

Issue 2:
Context: In long E2E test flows there are certain steps that are duplicated like moving in-between "Product" vs "shipping" vs "Payment method" tabs in an online order workflow.

Problem: In Playwright-Test, duplicate test titles are not allowed as "error" (not as a warning) which is painful for someone who is migrating test scripts from other testing frameworks like "Jasmine" (as in my scenario) where duplicate test titles were allowed.

Desired Solution : Is there a solution or setting, where this error can be avoided on the configuration level (preferably as a warning) without users to change change 100s of scripts manually porting from other test frameworks? Thanks!