E2E Testing Different Color Schemes using Playwright

1mo ago

Nowaday it is state of the art to support difference color schemas. While giving the user a choice is a good thing, it is a lot better to automatically switch between light and dark mode based on the user's preferences.

Testing Different Color Schemes using Playwright

Playwright is a powerful tool for automating browser testing tasks. It allows developers to write tests in various programming languages, such as JavaScript, Python, or C#, and run them on multiple browser engines, including Chromium, Firefox, and WebKit. In this blog post, we will explore how to use Playwright to test different color schemes of a website.

What is a color scheme?

A color scheme, also known as a color palette or color theme, defines the set of colors used in a website or application. It includes the background color, text color, link colors, button colors, and so on. Different color schemes can have a significant impact on the visual appearance and user experience of a website.

Why test color schemes?

Testing color schemes ensures that a website remains visually appealing, accessible, and usable across different color preferences and environments. By testing different color schemes, developers can identify and fix issues related to contrast, readability, and visual consistency.

Setting up Playwright

Before we dive into testing color schemes, let's set up Playwright:

  1. Install Playwright using your package manager of choice:
# npm
npm install playwright

# pnpm
pnpm add playwright
  1. Import the required Playwright module in your test script:
const { chromium } = require('playwright');

Automating color scheme testing

Now that we have Playwright set up, let's see how we can automate color scheme testing. Here's a step-by-step guide:

  1. Launch the browser and navigate to the website you want to test:
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();

await page.goto('https://www.example.com');
  1. Define a function to change the color scheme:
async function changeColorScheme(colorScheme) {
  await page.setViewportColorScheme(colorScheme);
  1. Write tests to validate the appearance and functionality of the website under different color schemes:
// Test 1: Ensure text is readable under the light color scheme
await changeColorScheme('light');
// Add your assertions or validations here

// Test 2: Ensure text is readable under the dark color scheme
await changeColorScheme('dark');
// Add your assertions or validations here

// Test 3: Ensure text is readable under a custom color scheme
await changeColorScheme('custom');
// Add your assertions or validations here
  1. Run the tests and observe the results:
# JavaScript
node your_test_script.js

By running these tests, you can ensure that the website maintains readability and visual consistency across different color schemes.

Additional considerations

Here are a few additional considerations to keep in mind while testing color schemes:

  • Test with different color blindness conditions: Consider using tools or browser extensions that simulate color blindness to ensure usability for people with different visual impairments.
  • Test across multiple browsers: Playwright allows you to run tests on multiple browser engines. Make sure to test your color schemes in different browsers to ensure consistency.
  • Perform visual regression testing: Use visual regression testing tools like Playwright's screenshot comparison functionality to detect any unexpected visual changes introduced by color scheme modifications.


Testing different color schemes using Playwright is a valuable practice for maintaining the visual integrity and accessibility of your website. By automating these tests, you can ensure that your website remains visually appealing and usable across a diverse set of user preferences and environments. Playwright's flexibility and cross-browser support make it an excellent choice for automating color scheme testing. So, give it a try, and start improving the user experience of your website today!