Automating Cross-Browser Testing with Playwright

Areesha Altaf
3 min readJan 29, 2025

--

Image from https://www.lambdatest.com/

Nowadays, websites must work correctly on different browsers. Users access websites from Chrome, Firefox, Safari, and even Edge. If a website is not tested on different browsers, users might see broken layouts or features not working. This is why cross-browser testing is very important.

Playwright is a powerful tool for this job. It allows running tests on multiple browsers easily. In this article, we will see how to automate cross-browser testing using Playwright and ensure that web applications work properly across different browsers and platforms.

Why Cross-Browser Testing is Important

Different browsers use different rendering engines. Chrome uses Blink, Firefox uses Gecko, and Safari uses WebKit. Sometimes, the same code behaves differently on each engine. This can lead to layout issues, broken functionality, or performance problems. Cross-browser testing helps fix these issues early before users face problems because of broken UI.

Setting Up Playwright

First, you need to install Playwright. If you have Node.js installed, you can use this command:

npm init playwright@latest

This will install the latest version of Playwright and set up the project. It will also ask which browsers to install. You can choose all for better testing coverage. Playwright supports Chromium, Firefox, and WebKit by default.

To confirm that Playwright is installed properly, run:

npx playwright — version

Writing a Simple Cross-Browser Test

Now, let’s write a simple test that runs on different browsers. Create a test file, for example, myTest.spec.js:

const { test, expect } = require(‘@playwright/test’);

test.describe(‘Cross-browser testing’, () => {

for (const browserType of [‘chromium’, ‘firefox’, ‘webkit’]) {

test(`Test on ${browserType}`, async ({ browser }) => {

const context = await browser.newContext();

const page = await context.newPage();

await page.goto(‘https://www.example.com');

const title = await page.title();

console.log(`Title on ${browserType}:`, title);

expect(title).toBe(‘Example Domain’);

await browser.close();

});

}

});

This test will run on Chromium (Chrome), Firefox, and WebKit (Safari). It opens the page, gets the title, and checks if it is correct.

Running the Test

To run this test, use the command:

npx playwright test myTest.spec.js

Playwright will execute the test on all selected browsers and show the result. If any test fails, it will provide detailed error messages to help debug the issue.

Parallel Execution

Playwright also allows running tests in parallel, making testing faster. You can enable parallel execution by modifying playwright.config.js:

module.exports = {

projects: [

{ name: ‘chromium’, use: { browserName: ‘chromium’ } },

{ name: ‘firefox’, use: { browserName: ‘firefox’ } },

{ name: ‘webkit’, use: { browserName: ‘webkit’ } }

]

};

Now, run tests using:

npx playwright test

Playwright will run tests on all browsers at the same time, improving efficiency and reducing testing time.

Handling Browser-Specific Issues

Sometimes, a feature may work in one browser but not on another due to any reason. Playwright allows checking the browser type and applying fixes. For example:

if (browserType === ‘webkit’) {

// Apply a workaround for Safari

await page.evaluate(() => {

document.body.style.zoom = ‘0.9’;

});

}

This can be useful when dealing with CSS rendering differences or browser-specific limitations.

Screenshots and Video Recording

Sometimes, it is useful to take screenshots or record videos if a test fails. The playwright makes this easy. The test can be updated like this:

const context = await browser.newContext({ recordVideo: { dir: ‘videos/’ } });

const page = await context.newPage();

await page.screenshot({ path: `screenshot-${browserType}.png` });

This will save screenshots and videos for debugging. You can also set Playwright to record test runs automatically by modifying playwright.config.js:

use: {

video: ‘on’,

screenshot: ‘on’

}

Debugging with Playwright

If a test fails, debugging can be done using the Playwright Inspector. Run the test with:

npx playwright test — debug

This opens an interactive UI where you can step through the test and inspect elements.

Conclusion

Cross-browser testing is very important to make sure your website works for all users. Playwright makes it easy to automate this process. By running tests on multiple browsers, developers can catch issues early and improve website quality. If you want to ensure the best experience for all users, using Playwright for cross-browser testing is a great choice.

With features like parallel execution, video recording, and browser-specific handling, Playwright can help testers and developers create reliable and efficient test automation strategies. QA Engineers are recommended to start using Playwright to make sure that a web application runs smoothly and seamlessly on all major browsers.

--

--

Areesha Altaf
Areesha Altaf

No responses yet