Playwright을 사용하여 Node.js 카나리 스크립트에 사용할 수 있는 라이브러리 함수 - Amazon CloudWatch

Playwright을 사용하여 Node.js 카나리 스크립트에 사용할 수 있는 라이브러리 함수

이 섹션에서는 Node.js Playwright 런타임을 사용하여 카나리 스크립트에 사용할 수 있는 라이브러리 함수에 대해 설명합니다.

시작

이 함수는 Playwright 시작 함수를 사용하여 Chromium 브라우저를 시작하고, 브라우저 객체를 반환합니다. 브라우저 바이너리의 압축을 풀고, 헤드리스 브라우저에 적합한 기본 옵션을 사용하여 크롬 브라우저를 시작합니다. launch 함수에 대한 자세한 내용은 Playwright 설명서의 launch 섹션을 참조하세요.

사용량

const browser = await synthetics.launch();

인수

options 옵션(선택 사항)은 브라우저에 설정할 수 있는 구성 가능한 옵션 집합입니다.

반환

Browser가 Playwright 브라우저 인스턴스인 Promise <Browser>가 반환됩니다.

이 함수를 다시 직접적으로 호출하면 새 브라우저를 시작하기 전에 이전에 열었던 브라우저가 닫힙니다. CloudWatch Synthetics에서 사용하는 시작 파라미터를 재정의할 수 있으며 브라우저를 시작할 때 추가 파라미터를 전달할 수 있습니다. 예를 들어 다음 코드 조각에서는 기본 인수와 기본 실행 경로를 사용하여 브라우저를 시작하지만 뷰포트는 800 x 600픽셀입니다. 자세한 내용은 Playwright 설명서의 Playwright launch options를 참조하세요.

const browser = await synthetics.launch({ defaultViewport: { "deviceScaleFactor": 1, "width": 800, "height": 600 }});

브라우저에 기본적으로 전달되는 Chromium 플래그를 추가하거나 재정의할 수도 있습니다. 예를 들어 다음과 같이 CloudWatch Synthetics 시작 파라미터의 인수에 --disable-web-security 플래그를 추가하여 웹 보안을 사용 중지할 수 있습니다.

// This function adds the --disable-web-security flag to the launch parameters const defaultOptions = await synthetics.getDefaultLaunchOptions(); const launchArgs = [...defaultOptions.args, '--disable-web-security']; const browser = await synthetics.launch({ args: launchArgs });

newPage

newPage() 함수는 새 Playwright 페이지를 생성하고 반환합니다. Synthetics는 HTTP 아카이브(HAR) 생성을 위한 네트워크 캡처를 활성화하기 위해 Chrome DevTools Protocol(CDP) 연결을 자동으로 설정합니다.

사용량

다음 중 한 가지 방법으로 newPage()를 사용합니다.

1: 새 브라우저 컨텍스트에서 새 페이지 생성:

const page = await synthetics.newPage(browser);

2. 지정된 브라우저 컨텍스트에서 새 페이지 생성:

// Create a new browser context const browserContext = await browser.newContext(); // Create a new page in the specified browser context const page = await synthetics.newPage(browserContext)

인수

Playwright Browser 인스턴스 또는 Playwright BrowserContext 인스턴스 중에 하나를 수락합니다.

반환

Page가 Playwright Page 인스턴스인 Promise <Page>가 반환됩니다.

close

현재 열려 있는 브라우저를 닫습니다.

사용량

await synthetics.close();

스크립트의 finally 블록에서 브라우저를 닫는 것이 좋습니다.

인수

없음

반환

브라우저 시작을 위해 Synthetics 시작 함수에서 사용되는 Promise<void>가 반환됩니다.

getDefaultLaunchOptions

getDefaultLaunchOptions() 함수는 CloudWatch Synthetics에서 사용하는 브라우저 시작 옵션을 반환합니다.

사용량

const defaultOptions = await synthetics.getDefaultLaunchOptions();

인수

없음

반환

브라우저 시작을 위해 Synthetics launch 함수에서 사용되는 Playwright 시작 옵션이 반환됩니다.

executeStep

executeStep 함수는 Synthetics 스크립트에서 단계를 실행하는 데 사용됩니다. CloudWatch Synthetics에서 Synthetics 단계는 카나리 스크립트를 명확하게 정의된 작업으로 세분화하여, 애플리케이션 여정의 다양한 부분을 개별적으로 모니터링할 수 있는 방법입니다. 각 단계에 대해 CloudWatch Synthetics는 다음을 수행합니다.

  • 단계가 시작되기 전과 단계가 완료된 후 스크린샷을 자동으로 캡처합니다. 단계 내에서 스크린샷을 캡처할 수도 있습니다. 스크린샷은 기본적으로 캡처되지만, Synthetics 구성인 (Todo: Link)를 사용하여 끌 수 있습니다.

  • 각 카나리 실행에 대해 단계 지속 시간, pass 또는 fail 상태, 소스 및 대상 페이지 URL, 연결된 스크린샷 등과 같은 단계 실행 세부 정보에 대한 요약이 포함된 보고서가 생성됩니다. CloudWatch Synthetics 콘솔에서 실행을 선택하면 단계 탭에서 각 단계의 실행 세부 정보를 볼 수 있습니다.

  • 각 단계에 대한 SuccessPercentDuration CloudWatch 지표가 내보내기되므로, 사용자는 각 단계의 가용성과 지연 시간을 모니터링할 수 있습니다.

사용량

await synthetics.executeStep("mystepname", async function () { await page.goto(url, { waitUntil: 'load', timeout: 30000 }); }
참고

단계는 순차적으로 실행해야 하며, Promise에 await를 사용해야 합니다.

인수

  • stepName 문자열(필수)(부울) - Synthetics 단계의 이름입니다.

  • functionToExecute 비동기 함수(필수) - Synthetics를 실행할 함수입니다. 이 함수에는 단계에 대한 로직이 포함되어야 합니다.

  • stepConfig 객체(선택 사항) - 단계 구성은 이 단계의 글로벌 Synthetics 구성을 재정의합니다.

    • continueOnStepFailure 부울(선택 사항) - 이 단계가 실패한 후에도 카나리 스크립트를 계속 실행할지 여부입니다.

    • screenshotOnStepStart 부울(선택 사항) - 이 단계를 시작할 때 스크린샷을 생성할지 여부입니다.

    • screenshotOnStepSuccess 부울(선택 사항) - 이 단계가 성공할 경우 스크린샷을 생성할지 여부입니다.

    • screenshotOnStepFailure 부울(선택 사항) - 이 단계가 성공할 경우 스크린샷을 생성할지 여부입니다.

  • page - Playwright 페이지 객체(선택 사항)

    Playwright 페이지 객체입니다. Synthetics는이 페이지 객체를 사용하여 스크린샷과 URL을 캡처합니다. 기본적으로 Synthetics는 스크린샷과 URL 등의 페이지 세부 정보를 캡처하기 위해 synthetics.newPage() 함수를 직접적으로 호출할 때 생성된 Playwright 페이지를 사용합니다.

반환

functionToExecute 함수에서 반환된 값을 확인하는 Promise가 반환됩니다. 예제 스크립트는 이 가이드의 canary 스크립트 샘플 코드 섹션을 참조하세요.