본문 바로가기
테스트/Playwright

[Playwright] Select 테스트

by 맨날개발 2025. 3. 1.

🎈 Select Locator 탐색

select 태그에 대한 Locator를 탐색할 때는 getByRole('combobox')를 사용하면 편하게 탐색할 수 있다. option을 선택할 때는 selectOption 함수를 사용한다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <select name="select" id="select">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
  </select>
</body>
</html>
test('Select', async ({ page }) => {
  await page.goto('http://127.0.0.1:5500/index.html');

  await page.getByRole('combobox').selectOption('2');

  await expect(page.getByRole('combobox')).toHaveValue('2');
});

 

📯 Option의 순서 확인

일반적인 경우는 아니지만, Option을 동적으로 생성하는 경우 Option이 순서대로 생성되었는지를 확인하고 싶은 경우가 있다.

그때는 아래와 같이 page.getByRole('option') Locator를 통해서 텍스트 출력 순서를 확인해볼 수 있다.

test('Option', async ({ page }) => {
  await page.goto('<http://127.0.0.1:5500/index.html>');

  await expect(page.getByRole('option')).toHaveText(['1', '2', '3']);
});

 

사용자에게 보여지는 텍스트에 대한 테스트는 위의 코드로 확인이 가능하다.

 

추가로 option의 텍스트와 value가 다른 경우가 있을 수 있다. 일반적인 상황에서는 이 정도까지 테스트를 하는 경우는 드물긴 하지만, 최근 이 부분이 문제가 되어 테스트 코드를 작성해야하는 경우가 생겼다.

 

toHaveValue, toHaveValues 는 <input>, <textarea>, <select> 와 같은 폼 요소에서만 작동이 가능하다. option의 value는 직접 toHaveAttribute를 통해서 테스트 할 수 있다.

test('Option toHaveAttribute', async ({ page }) => {
  await page.goto('<http://127.0.0.1:5500/index.html>');

  let count = 1;

  for (const option of await page.getByRole('option').all()) {
    await expect(option).toHaveAttribute('value', (count++).toString())
  }
});

'테스트 > Playwright' 카테고리의 다른 글

[Playwright] 드래그 앤 드랍  (0) 2025.03.24
[Playwright] 스텝 사용하기  (0) 2025.03.02
[Playwright] Locator의 메서드  (0) 2025.02.08
[Playwright] 유의사항  (0) 2025.01.31
[Playwright] 링크 이동 테스트  (0) 2025.01.25