- Name: Shiwoo Min
- Role: Full-Stack Developer · DevOps Engineer · Founder of Artiordex
- Contact: [email protected]
This repository contains a modular End-to-End (E2E) automation testing framework for Coupang, leveraging Playwright for web automation, Appium for mobile automation, and Nx for monorepo management. The framework is designed for scalability, maintainability, and seamless integration into CI/CD pipelines using GitHub Actions.
- Web UI tests (desktop & mobile browsers) with Playwright
- Native mobile app tests (iOS & Android) with Appium
- Shared utilities and configuration through Nx-managed packages
- CI/CD automation with environment-based test execution
- Provide a unified testing solution for both web and mobile platforms
- Maintain a scalable monorepo architecture with Nx
- Enable modular, reusable test components
- Integrate with GitHub Actions for automated test runs on pull requests, merges, and scheduled jobs
- Support environment-based configuration for staging, QA, and production
- Generate detailed reports and artifacts for every test run
- Languages: TypeScript, JavaScript
- Web Automation: Playwright
- Mobile Automation: Appium
- Monorepo Tooling: Nx
- CI/CD: GitHub Actions
- Node.js: v20+
- Browsers: Chromium, Firefox, WebKit
- Mobile Platforms: iOS, Android (emulators & real devices)
- Initialize Nx monorepo and base project structure
- Configure Playwright for web automation
- Implement environment-based configuration
- Add sample Coupang web test cases
- Integrate HTML and Allure reporting
- Configure Appium for iOS and Android testing
- Add shared utilities for selectors, actions, and assertions
- Implement modular test suites for web and mobile
- Set up GitHub Actions workflows for CI/CD
- Add scheduled nightly test runs and artifact uploads
coupang-playwright-e2e/
├─ .github/
│ └─ workflows/
│ ├─ e2e-web.yml
│ ├─ e2e-mobile.yml
│ ├─ e2e-api.yml
│ └─ nightly-regression.yml
│
├─ .vscode/ # Editor settings
│ ├─ settings.json # formatOnSave, tab size, etc.
│ ├─ extensions.json # Recommended extensions
│ └─ launch.json # Debug configs
│
├─ .husky/ # Git hooks
│ ├─ pre-commit # lint-staged, typecheck
│ └─ commit-msg # Conventional commits check
│
├─ .turbo/ # Turborepo config
│ └─ turbo.json
│
├─ packages/ # Shared libraries/modules
│ ├─ actions/ # Cross-platform actions
│ ├─ components/ # UI wrappers (header, modal, tabs)
│ ├─ config/ # Env/device/notification loader
│ ├─ constants/ # Constants
│ ├─ fixtures/ # Fixtures & mock data
│ ├─ formatters/ # Report & notification formatters
│ ├─ initializers/ # Test environment setup
│ ├─ locators/ # Locators, URLs, selectors
│ ├─ logger/ # Logging & result handling
│ ├─ notifications/ # Slack/Teams/Email alerts
│ ├─ types/ # TypeScript type declarations
│ └─ utils/ # Appium/browser/network/performance utils
│
├─ e2e/ # Test apps
│ ├─ web-pc/ # PC web (Playwright)
│ ├─ web-mobile/ # Mobile web (Playwright)
│ ├─ android-app/ # Android app (Appium)
│ ├─ ios-app/ # iOS app (Appium)
│ ├─ api/ # API tests (REST/SOAP)
│ ├─ speedtest/ # Speed/redirect measurement
│ └─ emulator-sandboxes/ # Emulators for test runs
│ ├─ android-emulator/
│ └─ ios-emulator/
│
├─ configs/ # Static configuration files
│ ├─ playwright/
│ │ ├─ base.config.ts
│ │ ├─ web-pc.config.ts
│ │ ├─ web-mobile.config.ts
│ │ └─ api.config.ts
│ ├─ appium/
│ │ ├─ base.config.js
│ │ ├─ android.config.js
│ │ └─ ios.config.js
│ ├─ ci/ # CI matrix, cache, paths
│ └─ notifications/ # Channel/webhook mapping
│
├─ tools/
│ ├─ scripts/ # Run via pnpm scripts
│ │ ├─ bootstrap.ts
│ │ ├─ run-web.ts
│ │ ├─ run-mobile.ts
│ │ ├─ run-api.ts
│ │ └─ collect-artifacts.ts
│ └─ docker/ # Dockerized test env
│ ├─ docker-compose.yml
│ ├─ playwright.Dockerfile
│ ├─ appium.Dockerfile
│ └─ emulator/
│ ├─ android/
│ └─ ios/
│
├─ assets/ # Test assets (use LFS for large files)
│ ├─ mobile/ # *.apk / *.ipa
│ └─ data/ # CSV/JSON/image mock data
│
├─ reports/ # Collected artifacts
│ ├─ allure/
│ ├─ html/
│ └─ traces/
│
├─ docs/
│ ├─ guides/
│ ├─ architecture/
│ ├─ security/
│ └─ images/
│
├─ .env.example
├─ CODEOWNERS
├─ package.json
├─ pnpm-workspace.yaml
├─ tsconfig.base.json
├─ nx.json
├─ turbo.json
├─ playwright.config.ts
├─ appium.config.js
└─ README.md
- Date: 2025-08-11 → 2025-08-22
- Updates
2025-08-11 - Initial project setup (Nx, Playwright, Appium, TypeScript)
2025-08-12 - Added base Playwright web test suite
2025-08-13 - Implemented Appium mobile test structure
2025-08-15 - Integrated shared config and utilities
2025-08-18 - Added GitHub Actions CI/CD pipelines
2025-08-20 - Dockerized test environments for local & CI runs
Template
2025-08-__ (Day __)
- Topics: (Chapter/Subject)
- Practice: (File/Folder path)
- Notes:
- References: (Book/Course/Link)
- Playwright
- Playwright API Testing
- Node.js
- TypeScript
- Python
- Selenium
- Appium
- Postman
- Newman
- Pytest
- Swagger (OpenAPI)
- Docker
- Kubernetes
- CI/CD Overview
- TypeScript Handbook
- Playwright Guide
- Selenium Guide
- Appium Guide
- OpenCV JavaScript Guide
- Docker Hub
- Cypress Docs
- Puppeteer Docs
- TestCafe Docs
- WebdriverIO Docs
- Jenkins Docs
- GitHub Actions Docs
- GitLab CI/CD Docs
- JMeter Docs
- k6 Docs
- Testim
- Applitools
- Mockaroo
- Faker.js
- Playwright Page Object Model (POM)
- POM in Playwright
- Playwright Trace Viewer
- Testcontainers