Issue 1:
Hi,

We have had a setup using Playwright that accesses Business central for more than 2 years running smoothly. 4 different processes running several time a day and each proces runs +45 times.

Since update to version 22.X of Business central the process stalls just after business central has logged in (can see login in the AD).

Business central is stalled at 'Getting Ready...' seems to go into loop. We await next step and have tried to expand the wait significantly but Business central never continues.

Have tried Microsoft business central support but without luck - they say that this is not supported by them. Tech guy helping me has been really helpful but think he was 'closed down' as the Business Central Group does not see it as being their issue.....no changes til Business Central will happen to mitigate around this.

We have tried many things - and we have different documentation and can also create further documentation if it can help.

We have a Business Central version 21 running and the process runs successfully as they have done for over 2 years - related to this we have Playwright trace files and HAR files

We have a Business Central version 22.X running and the process stalls every time and we have tried hundreds of times - related to this we have Playwright trace files and HAR files also

Have tried both of the above with a dedicated VPN also - no difference.

Is there anybody out there who could help us in any way??

Does anybody know how to interpretate the files?

This has been down since 4. June now so if anybody knows anything that they believe could help we would really appreciate!

System info

Playwright Version: [v1.XX] - latest

Operating System: [All, Windows 11, Ubuntu 20, macOS 13.2, etc.]

Browser: [All, Chromium, Firefox, WebKit]

Other info: Executing using PlayWright

Source code

I provided exact source code that allows reproducing the issue locally.

Link to the GitHub repository with the repro

[https://github.com/your_profile/playwright_issue_title]

or

Config file

// playwright.config.ts
import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'], },
},
});

Test file (self-contained)

it('should check the box using setChecked', async ({ page }) => {
await page.setContent(`<input id='checkbox' type='checkbox'></input>`);
await page.getByRole('checkbox').check();
await expect(page.getByRole('checkbox')).toBeChecked();
});

Steps

[Run the test]

[...]

Expected

[Describe expected behavior]

Actual

[Describe actual behavior]

Issue 2:
System info

Playwright Version: v1.32.2

Operating System: Windows

Browser: Chromium

Other info:

Source code

[x ] I provided exact source code that allows reproducing the issue locally.

Link to the GitHub repository with the repro

Repository

or

Config file

// playwright.config.ts
import {PlaywrightTestConfig} from "@playwright/test";

const config: PlaywrightTestConfig = {
timeout: 240000,
globalTimeout: 18000000,
testDir: "./tests",
reporter: [
["list"],
["junit", {outputFile: "reports/test-results.xml"}],
["json", {outputFile: "reports/test-results.json"}],
["html", {open: "never"}],
],
use: {
browserName: "chromium",
actionTimeout: 30000,
trace: "off",
screenshot: "on",
viewport: {width: 1400, height: 900},
video: {
mode: "retain-on-failure",
size: {
//Like in our project
width: 1400,
height: 900,
},
},
contextOptions: {
ignoreHTTPSErrors: true,
},
// Browser options
launchOptions: {
channel: "chrome",
slowMo: 200,
args: [
"--no-sandbox",
"--ignore-certificate-errors",
"--ignore-certificate-errors-skip-list",
],
},
},
};

export default config;

Test file (self-contained)

import { test, expect } from '@playwright/test';

test.describe("Describe", () => {
test.beforeEach(async ({page}) => {
await page.setViewportSize({width: 1400, height: 900});
})

test('test 1', async ({ page }) => {

await page.goto('https://playwright.dev/');

// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/Playwright/);

// create a locator
const getStarted = page.getByText('Get Started');

// Expect an attribute "to be strictly equal" to the value.
await expect(getStarted).toHaveAttribute('href', '/docs/intro');

//page.waitForFunction
await page.waitForFunction(() => document.querySelectorAll('[class="navbar__logo"]').length == 1, {timeout: 60000});

// locator.toHaveCount()
await expect(page.locator('[class="navbar__logo"]')).toHaveCount(1);

// Click the get started link.
await getStarted.click();

// Expects the URL to contain intro.
await expect(page).toHaveURL(/.*intro/);
});

test('test 2', async ({ page }) => {

await page.goto('https://playwright.dev/');

// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/Playwright/);

// create a locator
const getStarted = page.getByText('Get Started');

// Expect an attribute "to be strictly equal" to the value.
await expect(getStarted).toHaveAttribute('href', '/docs/intro');

//page.waitForFunction
await page.waitForFunction(() => document.querySelectorAll('[class="navbar__logo"]').length == 1, {timeout: 60000});

// locator.toHaveCount()
await expect(page.locator('[class="navbar__logo"]')).toHaveCount(1);

// Click the get started link.
await getStarted.click();

// Expects the URL to contain intro.
await expect(page).toHaveURL(/.*intro/);
});

test('test 3', async ({ page }) => {

await page.goto('https://playwright.dev/');

// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/Playwright/);

// create a locator
const getStarted = page.getByText('Get Started');

// Expect an attribute "to be strictly equal" to the value.
await expect(getStarted).toHaveAttribute('href', '/docs/intro');

//page.waitForFunction
await page.waitForFunction(() => document.querySelectorAll('[class="navbar__logo"]').length == 1, {timeout: 60000});

// locator.toHaveCount()
await expect(page.locator('[class="navbar__logo"]')).toHaveCount(1);

// Click the get started link.
await getStarted.click();

// Expects the URL to contain intro.
await expect(page).toHaveURL(/.*intro/);
});

test('test 4', async ({ page }) => {

await page.goto('https://playwright.dev/');

// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/Playwright/);

// create a locator
const getStarted = page.getByText('Get Started');

// Expect an attribute "to be strictly equal" to the value.
await expect(getStarted).toHaveAttribute('href', '/docs/intro');

//page.waitForFunction
await page.waitForFunction(() => document.querySelectorAll('[class="navbar__logo"]').length == 1, {timeout: 60000});

// locator.toHaveCount()
await expect(page.locator('[class="navbar__logo"]')).toHaveCount(1);

// Click the get started link.
await getStarted.click();

// Expects the URL to contain intro.
await expect(page).toHaveURL(/.*intro/);
});

test('test 5', async ({ page }) => {

await page.goto('https://playwright.dev/');

// Expect a title "to contain" a substring.
await expect(page).toHaveTitle(/Playwright/);

// create a locator
const getStarted = page.getByText('Get Started');

// Expect an attribute "to be strictly equal" to the value.
await expect(getStarted).toHaveAttribute('href', '/docs/intro');

//page.waitForFunction
await page.waitForFunction(() => document.querySelectorAll('[class="navbar__logo"]').length == 1, {timeout: 60000});

// locator.toHaveCount()
await expect(page.locator('[class="navbar__logo"]')).toHaveCount(1);

// Click the get started link.
await getStarted.click();

// Expects the URL to contain intro.
await expect(page).toHaveURL(/.*intro/);
});
})

Steps

Run the test

Open the HTML report

Expected

The assertions should take the same time in the different versions and even should be with a better performance.

Actual

As can be seen - each assertion and page.waitForFunction() takes at least 200ms more:

version 1.27.1

version 1.32.2

You have a link for a repo that contains two branches (with different versions) and GitHub Actions executions.

Note: We use sloMo: 200 in our config file, it is required to us because of the Playwright speed. Our tested platform works slowly. But it is the same parameter in two branches and versions.

Maybe the parameter of the sloMo didn't affect the assertions with version 1.27.1 and started to affect the newest version?