본문으로 건너뛰기
SDETRole
SDETRole

용어집 · UI 자동화

자동 대기(Auto-waiting)

영어: Auto-waiting

다른 이름: auto-wait, 오토 웨이팅, 자동 대기 기능, actionability checks

정의

고정된 sleep에 의존하지 않고, 요소가 표시·안정·활성화되는 등 준비될 때까지 기다린 뒤 동작을 수행하는 프레임워크 기능입니다.

자동 대기(Auto-waiting)란 자동화 프레임워크가 동작을 수행하기 전에 요소가 준비되었는지 확인하고, 준비될 때까지 또는 타임아웃이 끝날 때까지 계속 재시도하는 것을 말합니다. Playwright와 Cypress에는 이 기능이 내장되어 있습니다. Playwright의 click()은 요소가 DOM에 연결되고(attached), 화면에 보이고(visible), 안정적이며(애니메이션 중이 아님), 이벤트를 받을 수 있고(다른 요소에 가려지지 않음), 활성화될(enabled) 때까지 기다립니다. 여러분은 동작만 작성하면 되고, 타이밍은 프레임워크가 처리합니다.

예시

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

test('saves the profile', async ({ page }) => {
  await page.goto('/profile');
  await page.getByLabel('Display name').fill('Ada');
  // Waits until the button is visible, stable, enabled and not covered
  await page.getByRole('button', { name: 'Save' }).click();
  // Retries until the toast appears or the expect timeout is reached
  await expect(page.getByRole('status')).toHaveText('Profile saved');
});

어디에도 waitForTimeout이 없습니다. 폼 검증 중에 저장 버튼이 잠시 비활성화되더라도 클릭은 실패하지 않고 기다립니다.

명시적 대기, 암시적 대기와의 차이

Selenium WebDriver는 동작 전에 자동으로 기다리지 않습니다. 암시적 대기(implicit wait)를 설정하거나 — 이는 findElement가 요소의 존재를 폴링하는 시간에만 영향을 줍니다 — WebDriverWait와 elementToBeClickable 같은 ExpectedConditions 검사로 명시적 대기(explicit wait)를 작성해야 합니다. 자동 대기는 프레임워크가 모든 동작마다 대신 작성해 주는 명시적 대기에 가깝고, 검사 항목도 동작별로 다릅니다. 예를 들어 fill()은 요소가 편집 가능한지도 추가로 확인합니다.

한계

  • 비즈니스 상태가 아니라 요소를 기다립니다. 버튼이 제출할 데이터가 로드되기 전에 이미 클릭 가능하다면 자동 대기로는 막을 수 없습니다. 먼저 필요한 상태를 어설션하세요.
  • 한 번 읽는 값에는 적용되지 않습니다. await locator.textContent()는 지금 있는 값을 그대로 반환합니다. 텍스트를 기다리려면 toHaveText 같은 웹 퍼스트 어설션을 쓰세요.
  • 느린 동작을 감출 수 있습니다. 항상 타임아웃의 대부분을 소모하는 단계는 통과하더라도 트레이스에서 확인해 볼 만한 성능 신호입니다.
  • force: true는 검사를 건너뜁니다. 커스텀 컨트롤에서 가끔 필요하지만, 대개는 실제 문제를 가리고 있는 것입니다.

SDETRole 전체에서 검색할 내용을 입력하세요.

Pagefind 전문 검색 · 브라우저에서 실행됩니다 검색 페이지 열기 →