PlayWright를 이용한 웹앱 테스트

플레이라이트는 웹앱에 대한 테스트 자동화 라이브러리로 JS 코드(또는 TS)로 테스트를 작성할 수 있다. 바이브 코딩 시 기능에 대한 테스트를 AI 통해 하고자할때 매우 유용한데, 웹브라우저의 특정 버튼을 AI가 클릭하고 그 결과가 기대한 것와 같은지에 대한 인터렉티브한 행동 테스트도 가능하다. 우와, 몇달 전까지만 해도 이런건 사람의 영역이라 생각했다. 하나씩 하나씩 인간의 만용을 AI는 박살내고 있다. 겸손 겸손…

플레이라이트의 목적이 특정 웹앱에 대한 테스트에 있다. 즉, 테스트를 위한 독립된 프로젝트를 구성할 수 있다. 명령은 다음과 같다.

npm init playwright@latest

위의 명령이 실행되면 인간은 다음과 같은 내용을 입력해야 한다. (음.. AI를 에이전트라고 부른다면 인간은 어떻게 불러야 구분이 될까? 개발자라고 하기엔 AI 역시 코딩을 작성하므로 개발자가 아닌게 아니니..)

Initializing project in '.'
✔ Do you want to use TypeScript or JavaScript? · TypeScript
✔ Where to put your end-to-end tests? · tests
✔ Add a GitHub Actions workflow? (Y/n) · false
✔ Install Playwright browsers (can be done manually via 'npx playwright install')? (Y/n) · true

테스트 프로젝트를 위한 파일들이 자동으로 구성되는데, 여기서 테스트를 위한 코드 작성은 tests 폴더(앞서 인간이 입력한 값)에 example.spec.ts 파일이 보이는데, 그냥 이 파일에 테스트 코드를 입력하면 된다. 이미 테스트로 잘 잘동하는 테스트 코드가 있는데, 그건 지우고 다음과 같은 코드를 작성해 테스트해 보았다.

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

test('login', async () => {
  const browser = await chromium.launch({
    headless: false,
    args: [
      '--enable-unsafe-webgpu',
      '--enable-features=Vulkan'
    ]
  });

  const context = await browser.newContext();
  const page = await context.newPage();

  await page.goto('https://www.hyyyydai-3d.com');

  await page.fill('.user-id input', 'gizmo');  
  await page.fill('.user-pw input', '*********');

  await page.locator('.user-id input').press('Tab');

  await page.click('.btn-login');

  await expect(page.getByText('공지사항')).toBeVisible();
});

위의 테스트는 딱 1개인데, 주어진 url에 들어가서 id와 암호를 자동으로 채우고 로그인 버튼을 클릭해서 ‘공지사항’이라는 텍스트가 보이면 테스트 성공이라는 것이다.

내가 테스트해야할 웹 페이지가 3D 그래픽인지라 WebGPU에 대한 활성화 없이는 테스트에 실패함으로, 위의 코드에는 WebGPU에 대한 활성화 코드가 있고 테스트가 잘되는것을 확인할 수 있었다. 실제 테스트 실행은 다음과 같다.

npx playwright test

테스트를 위한 전용 웹브라우저를 보면서 테스트가 진행되는 것을 살펴보고 싶은 꼼꼼이라면 (대신 사는게 고달프겠지.. 나처럼 ㅜ_ㅜ) 다음과 같은 방식의 테스트 실행도 가능하다.

npx playwright test --ui

이 글은 플레이라이트를 처음 사용하는 인간을 위한 가이드일뿐이다. 보다 상세한 방법은 AI에게 물어보고 가이드 받으라.

Mermaid 문법

```mermaid
graph TD
    A[사각박스] --> B{다이아몬드박스}
    B -->|라벨1| C((원형박스))
    B -->|라벨2| D(라운드박스)
    C --> E([텍스트])
    subgraph 서브그래프
        D --> E
        E --> F[[서브루틴]]
        E --> G[(저장소박스)]
    end
    E --> H([경기장박스])
    E --> I>리본박스]
    E --> J[/기울박스1/]
    E --> K[\기울박스2\]
    J ---|실선| K
    A -.->|점선| F
    G ==>|굵은화살| H
    F ===|굵은실선| H
    K --> L{{육각박스}}
```

```mermaid
classDiagram

class 클래스명 {
    +공용_필드: string
    -비공개_필드
    #보호된_필드
    ~패키지_내부_필드
    +공용_메서드(a: int): void
    -비공개_메서드()
    #보호된_메서드()
    ~패키지_내부_매서드()
}
```

```mermaid
classDiagram
    class 오리 {}
    class 물고기
    class 얼룩말 {
        <<abstract>>
    }
    class 동물 {
        <<interface>>
    }
    class 닭
    class 날개
    
    동물 <-- 오리
    동물 <.. 물고기
    동물 <|-- 얼룩말
    동물 <|.. 닭
    얼룩말 -- 물고기
    오리 *--> 날개
    닭 *-->"2" 날개
    비늘"*"--"1"물고기
```

Mermaid 참조

npm으로 설치된 모든 패키지를 최신 버전으로 업데이트

npm 방식임. 먼저 npm-check-updates를 전역적으로다가 설치(설치 없이 바로 실행하는 방법은 맨 하단 참조)

npm install -g npm-check-updates

이미 설치된 패키지가 담긴 node_modules 폴더와 패키지 고정 버전 정보가 담긴 package-lock.json 파일을 삭제 후 다음 명령 입력 …

ncu -u

package.json에 최신 버전의 패키지가 반영되고 이제 npm i로 설치하면 끝.

설치없이 바로 실행은 아래 참조 …

npx npm-check-updates -u

지오서비스웹(GEOSERVICE-WEB)

소 개

GEOSERVICE-WEB은 지오서비스(지리, 지도, 위치 등과 관련된 서비스)를 웹에서 제공합니다. 지오서비스웹의 목표는 웹에서 누구나 쉽게 지도 기반의 비지니스를 효과적으로 해결하기 위한 서비스를 제공하는데 있습니다. 웹브라우저에서 아래의 URL을 입력하여 이용할 수 있습니다.

https://www.geoservice.co.kr

지오서비스웹은 공간(Spatial)과 위치(Location)에 대한 다양한 서비스를 웹에서 이용할 수 있습니다. 예를 들어 지오코딩 등과 같은 기능을 이용해 공간 데이터를 생성하고 시각화할 수 있습니다. 또한 자신이 가진 데이터를 아카이브에 업로드하여 언제 어디서든 사용할 수 있으며 다른 사용자와 기본적으로 공유할 수 있습니다. 원한다면 내가 올린 데이터는 공유하지 않도록 설정할 수도 있습니다.

업데이트

  • [2026/02/19] SVG 파일 생성 기능이 개선되었습니다. 미리보기가 가능하고 결과 SVG 용량은 줄면서 품질은 향상되어졌습니다.
  • [2025/09/02] 지오코딩 결과에 19자리의 PNU 코드가 제공됩니다.
  • [2025/09/02] 헤깔려 틀리게 입력한 도로명주소도 지오코딩이 가능해졌습니다.
  • [2025/08/20] 최신 주소 DB(2025년 7월 구축)로 업데이트 되었습니다.
  • [2025/07/15] 지오코딩 결과를 SHP 뿐만 아니라 CSV 형식으로 바로 저장되도록 하였습니다.
  • [2025/03/14] 2025년 1분기 최신 주소 DB로 업데이트 되었습니다.
  • [2025/03/04] 통계 데이터에 대한 파이차트 맵 분석(시각화) 기능이 추가되었습니다.
  • [2024/10/22] SHP 데이터를 SVG 데이터로 생성하는 기능이 추가되었습니다.
  • [2024/10/16] 주소 DB가 2024년 10월 DB로 업데이트되었습니다.
  • [2024/10/14] 티센 폴리곤 생성 기능 추가, 공간 및 속성으로 필터링 하여 공간 데이터를 추출하는 기능 추가
  • [2024/10/01] 공간 데이터에 대한 NULL Shape 지원 및 압축 파일 안의 한글 파일명 오류 등이 수정되었습니다.
  • [2024/08/08] 공간 데이터 편집 기능이 추가되었습니다.
  • [2024/07/20] 지오코딩 등을 위한 입력 데이터 형식으로 CSV 파일 뿐만 아니라 엑셀 파일을 그대로 사용할 수 있도록 하였습니다.
  • [2024/07/08] 주소 DB가 2024년 6월 DB로 업데이트되었습니다.
  • [2024/04/03] 지오코딩과 역지오코딩 수행 속도가 개선되었습니다. (1건 당 평균 0.01초 소요)
  • [2024/02/25] SVG 형식의 행정구역도를 제공합니다. (아카이브에서 사용자명을 gizmo로 입력해 조회 가능)
  • [2024/02/16] 주소 DB가 2024년 1월 DB로 업데이트 되었으며 리버스지오코딩의 정확도가 개선되었습니다.
  • [2024/01/10] 새로운 지오코딩 엔진(gc_v3)으로 업데이트 되었습니다.
  • [2023/12/15] 주소 DB가 2023년 11월 DB로 업데이트 되었습니다.
  • [2023/11/30] 지오코딩 정확도 개선 및 UI 편의성 개선
  • [2023/10/31] HTTPS 적용 및 접속 URL 변경(https://www.geoservice.co.kr)
  • [2023/09/12] 통계분석 기능으로 색상단계구분도 분석이 추가되었습니다.
  • [2023/08/14] 속성 데이터 조인 기능과 지점 간 거리 분석 기능이 추가되었습니다.
  • [2023/07/30] 주요 기능 2가지 추가(헥사곤 데이터 생성, 밀도분석) 및 최신 주소DB(2023년 7월)로 업데이트 되었습니다.
  • [2023/02/21] 지번주소(2023년 2월), 도로명주소(2023년 1월) DB가 업데이트 되었습니다.
  • [2022/10/29] 기능 추가 및 사용자 편의성이 개선되었습니다.
  • [2022/09/25] 기능 추가 및 사용자 편의성이 개선되었습니다.
  • [2022/09/06] 사용자가 제공한 피드백을 통해 확인된 버그 제거 및 기능 개선
  • [2022/08/01] GEOSERVICE-WEB v1.0 서비스 시작

사용자 메뉴얼

지오서비스웹(GEOSERVICE-WEB) 기능 별 메뉴얼

FAQ

지오코딩(역지오코딩 포함) 변환 건수 무제한 사용(설치형 임대 라이선스) 소개

엑스알 지오코더 (XrGeocoder) v4.5 설치형 임대 라이선스 및 사용 설명