다운로드된 파일에 대한 검증

Prev Next

일부 웹사이트에서는 보고서 내보내기 또는 문서 저장 시 파일 다운로드가 발생합니다.

테스트에서는 파일이 실제로 다운로드되었는지, 파일명이 올바른지, 파일 내용이 예상과 일치하는지 등을 검증하고 싶을 수 있습니다.

이 페이지에서는 다운로드된 파일에 대해 검증(Assertion)하는 기본 코드 예시를 제공합니다.

설정 방법

우선, 파일 다운로드를 트리거하는 테스트 단계(일반적으로 다운로드 링크나 버튼을 클릭하는 클릭 스텝)를 식별하세요.

그 단계 이전에, 다운로드 시작을 기다리는 Playwright 코드 스텝을 추가합니다.

const downloadPromise = page.waitForEvent("download");

그 다음, 클릭 스텝 이후에, 다운로드된 파일을 처리하고 검증하는 Playwright 코드 스텝을 추가하세요.

파일 내용 검증

아래 예시는 다운로드된 파일의 내용을 메모리에 불러온 후, 해당 파일 안에 "Q2 report"라는 텍스트가 포함되어 있는지를 검증합니다.

const download = await downloadPromise;

        const downloadStream = await download.createReadStream();
        const fileContent = await new Promise((resolve) => {
        const chunks: Buffer[] = [];
        downloadStream.on("data", (chunk) => {
        chunks.push(chunk);
        });
        downloadStream.on("end", () => {
        resolve(Buffer.concat(chunks));
        });
        });

        // Example assertion — update this to match your use case
        expect(fileContent.toString("utf-8")).toContain("Q2 report");

파일 이름 검증

아래 예시에서는 파일 이름에 'Q2 report'라는 문자열이 포함되어 있는지를 어서트(검증)합니다.

const download = await downloadPromise;

        // Get the file name
        const fileName = download.suggestedFilename();

        // Example assertion for the file name
        expect(fileName).toContain("Q2 report");

위 코드 스니펫은 다양한 방식으로 수정이 가능하며, 다운로드 및 다운로드된 파일과 관련된 다양한 항목들에 대한 검증에 사용할 수 있습니다.
Autify Nexus의 Playwright 스텝에서 어떤 다운로드 관련 동작을 구현할 수 있는지에 대한 더 많은 아이디어는 Playwright 공식 문서를 참고해 주세요.

하나의 시나리오에서 여러 번 다운로드 검증을 수행하는 경우

하나의 시나리오 내에서 파일 다운로드 검증을 2회 이상 수행하는 경우, 그대로 두면 2회째 이후의 검증이 올바르게 동작하지 않을 수 있습니다. 이는 Playwright의 page.waitForEvent("download")가 한 번 이벤트를 감지하면 완료되어 버려, 첫 번째 다운로드 정보를 계속 참조하기 때문입니다.

새로 다운로드한 파일에 대해 올바르게 어설션(내용 일치 확인)을 수행하려면, 두 번째 다운로드를 트리거하는 스텝(다운로드 등 클릭) 직전에 다시 다운로드 이벤트를 기다리는 코드를 추가해야 합니다.

다음 절차에 따라 수정하십시오.

  1. 2회째 이후의 다운로드를 수행하는 스텝(요소 클릭 등)의 직전에 Playwright 코드 스텝을 삽입하십시오.

  2. 다음 코드를 작성하여 downloadPromise를 재정의하십시오.

// const는 붙이지 않고 작성하십시오
downloadPromise = page.waitForEvent("download");

FAQ

리플레이 시 다운로드하는 파일의 파일명이 변경되는 이유는 무엇인가요?

Playwright의 사양입니다.
다운로드한 파일명을 확인하고 싶은 경우, 위에서 언급한 suggestedFilename()을 사용하여 검증할 수 있습니다.