Test Automation Blog

Tools, Tips and Thoughts for Playwright, Selenium UI and API automated testing

Changing Playwright data-testid used by getByTestId()

Many test automation frameworks like Playwright support the use of a data-testid attribute (or similar) as a method for locating elements on a web page. For example we can locate this element:

<input type='text' id='name' data-testid='username' aria-label='User Name' />

and populate it with some text using this Playwright code:

await page.getByTestId('username').fill('Harry Lee');

Although data-testid is the most common name for this attribute – which is why Playwright uses this by default and requires no configuration to set up – your application may use a different attribute name, for example data-test-id.

In this case you will need to update the Playwright config file with the attribute name in use. For example if using Typescript you’ll need to amend the playwright.config.ts file:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    testIdAttribute: 'data-test-id'
  }
});

Alternatively the new attribute name can be set within the test code:

selectors.setTestIdAttribute('data-test-id');

Note: there is some controversy about whether using these attributes is a good idea, or whether we should instead identify elements using Role or Text, or id or name. Personally I think using data-testid or some equivalent is best practice, and helps to create less flaky and more maintainable tests.

Changing Playwright data-testid used by getByTestId()
Scroll to top