- Node.js v20.11.1 以上
- pnpm (パッケージマネージャ)を有効化します
-
corepack enable pnpm corepack use pnpm@latest
-
- 依存パッケージをインストールします
-
pnpm install
-
- サーバー、アプリ、管理画面のコードをビルドします
-
pnpm run build
-
- サーバーを起動します
-
pnpm run start
-
- Cyber TOON Web アプリには
http://localhost:8000/
でアクセスします - Cyber TOON 管理画面には
http://localhost:8000/admin
でアクセスします- ユーザー名:
administrator@example.com
- パスワード:
pa5sW0rd!
- ユーザー名:
pnpm workspaces を採用しています。
/workspaces/server
: サーバーの実装です/workspaces/client
: ブラウザが読み込むエントリーファイルです/workspaces/app
: Cyber TOON Web アプリです/workspaces/admin
: Cyber TOON 管理画面です/workspaces/schema
: データベースモデルと API リクエスト・レスポンスのインタフェースです/workspaces/image-encrypt
: 画像難読化のためのコードです/workspaces/testing
: E2E テストと VRT の実行環境です
API ドキュメントを Swagger UI で提供しています。
ローカルでサーバーを建てて、 http://localhost:8000/api/v1
にアクセスします。
Playwright で E2E テスト・Visual Regression Testing (VRT) を提供しています。
競技後のレギュレーションチェックでは、提供している E2E テスト・VRT と同等のコードで検証します。
-
Playwright 用の Chromium をインストールします
-
pnpm --filter "@wsh-2024/testing" exec playwright install chromium
-
-
ローカル環境に対してテストを実行する場合は、サーバーをあらかじめ起動しておきます
-
pnpm run build && pnpm run start
-
-
E2E テスト・VRT を実行します
⚠️ スクリーンショットは環境によって差異が生じるため、ご自身の環境で最初に取り直すことを推奨します- スクリーンショットを取り直す場合は、
/workspaces/testing/package.json
のコマンドに--update-snapshots
オプションを追加します
- スクリーンショットを取り直す場合は、
- ローカル環境に対してテストを実行する場合
-
pnpm run test
-
- リモート環境に対してテストを実行する場合
-
E2E_BASE_URL=https://web-speed-hackathon-2024.example.com pnpm run test
-
-
デバッグモードでは、ステップバイステップで E2E テスト・VRT を実行できます
-
pnpm run test:debug
- 特定のテストのみを実行したい場合は test.describe.only や test.only で絞り込みを行うと便利です
- さらに詳しいデバッグの Tips は Playwright 公式が提供している Debugging Tests をご覧ください
-
今回の課題は、Service Worker のコードも提供しています。 Service Worker で不具合が起きた場合、ページへアクセスできなくなる可能性があります。
ページへアクセスできなくなった場合、次の手順で Service Worker をデバッグ・削除できます。
chrome://serviceworker-internals/
にアクセスします- 対応する URL の Service Worker を探します
- Service Worker に対して、停止・削除・インスペクタの表示を行います
今回の課題は、漫画ページ画像へ簡易的な難読化処理をかけています。 このレポジトリで提供される漫画ページ画像は、既に難読化処理がされています。
難読化された画像を復号するための CLI ツールを用意しています。
難読化された画像が格納されているディレクトリを ./encrypted
、出力先ディレクトリを ./output
とするとき、次のコマンドで復号化できます。
cd workspaces/image-encrypt
pnpm run cli decrypt ./encrypted ./output
元画像が格納されているディレクトリを ./raw
、出力先ディレクトリを ./output
とするとき、次のコマンドで復号化できます。
cd workspaces/image-encrypt;
pnpm run cli encrypt ./raw ./output