소스 정보
- 저장소
- joker1007/bookwall
- 최근 소스 활동
- 2026년 5월 29일 06:42
- 감지된 SKILL.md 언어
- 일본어
- 스타
- 5
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/joker1007/bookwall --skill e2e-tests명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
SOC 직업 분류 기준
| name | e2e-tests |
| description | Run / debug Bookwall の Playwright e2e テスト。dev 環境ではなく test 環境を立ててブラウザ経由で動作検証する手順。 |
| allowed-tools | Bash(npx:*) Bash(npm:*) Bash(bundle:*) Bash(playwright-cli:*) Bash(curl:*) |
UI / API レベルの動作検証は dev 環境ではなく e2e 専用の test_e2e 環境 で実施する。
dev は普段の手作業用、 e2e は隔離 DB + reset エンドポイント付きで毎テスト前にクリーンになる。
test_e2e は test を母体にした専用 environment で、DB は storage/test_e2e.sqlite3、
Active Storage は tmp/storage_e2e を参照する。これにより rspec が使う test
(storage/test.sqlite3 / tmp/storage) と永続データが完全に分離され、e2e の残骸が
rspec を汚すことがない (rspec は常に RAILS_ENV=test)。
| プロセス | ポート | 役割 |
|---|---|---|
| Rails (Falcon) | 3001 | RAILS_ENV=test_e2e + BOOKWALL_E2E_RESET=1 起動 |
| Vite | 5174 | BOOKWALL_API_TARGET=http://127.0.0.1:3001 で proxy |
両者は client/playwright.config.ts の webServer 設定で npx playwright test 実行時に自動起動 する。手動で立てる必要は基本ない (reuseExistingServer: !CI なので既に立っていれば再利用)。
bind は 127.0.0.1 — localhost を ::1 だけにマップしている環境を踏まないため。
tests/e2e/helpers/test-base.ts の resetDb fixture で毎テスト最初に POST /api/test_support/reset を投げる。これはルートが BOOKWALL_E2E_RESET=1 の時にだけマウントされるエンドポイント (server/app/controllers/api/test_support_controller.rb)すべて client/ ディレクトリで実行 (cwd を間違えない)。
cd client
# 全 e2e (desktop + mobile)
npm run test:e2e
# desktop chromium のみ
npx playwright test --project=desktop-chromium
# 1 ファイル
npx playwright test tests/e2e/smoke.spec.ts
# UI モード (対話デバッグ)
npm run test:e2e:ui
# 失敗時にだけ trace と動画が残る (`use: { trace: "retain-on-failure", video: "retain-on-failure" }`)
# trace を開く
npx playwright show-trace test-results/<name>/trace.zip
# HTML レポート
npx playwright show-report
playwright が自動で bin/rails db:prepare を呼ぶので普段は不要。手動で立て直すときは:
cd server
RAILS_ENV=test_e2e bundle exec rails db:prepare
DB がスキーマ不整合で起動できない時:
cd server
RAILS_ENV=test_e2e bundle exec rails db:drop db:prepare
UI を立ち上げる前にロジックだけ確認したい場合は rails runner で RAILS_ENV=test_e2e を指定する:
cd server
RAILS_ENV=test_e2e BOOKWALL_E2E_RESET=1 bundle exec rails runner '
library = Library.create!(name: "Smoke", path: Rails.root.join("spec/fixtures/files").to_s)
log = Scanners::LibraryScanner.new(library).call
puts({status: log.status, books: library.books.count}.inspect)
'
ポイント:
BOOKWALL_E2E_RESET=1 を付けておく — /api/test_support/reset が必要な後続テストでルートマウントが効くようにするため (起動した rails runner 自体には不要だが、playwright が後で立てる server で必要)Library.delete_all などで掃除しないと、その後 playwright が走ったときに test_support#reset が壊れたデータで FK 違反する場合がある。怪しい時は次節の手動 reset を使うtest_support#reset がエラーを返す / playwright の最初のテストが reset failed: HTTP 500 で死ぬ時:
cd server
RAILS_ENV=test_e2e bundle exec rails runner '
ActiveRecord::Base.connection.execute("PRAGMA foreign_keys = OFF")
ActiveStorage::Attachment.delete_all
ActiveStorage::VariantRecord.delete_all
ActiveStorage::Blob.delete_all
Library.delete_all
Book.delete_all
ActiveRecord::Base.connection.execute("PRAGMA foreign_keys = ON")
puts "cleaned"
'
または RAILS_ENV=test_e2e bundle exec rails db:drop db:prepare で完全リセット。
書籍メタやリーダーの実 file が必要なテストでは server/spec/fixtures/files/ を library のパスとして使える:
| ファイル | 用途 |
|---|---|
sample.cbz | CBZ scanner |
sample.epub | EPUB scanner |
sample_vertical_jp.epub | 縦書き writing-mode |
sample.pdf | PDF scanner |
sample_image_dir/ | image_dir scanner |
BOOKWALL_E2E_RESET が未設定 → reset failed: HTTP 404 を踏む。 playwright.config.ts の webServer command に必ず付けるlocalhost vs 127.0.0.1 を混ぜると Node の health check が失敗する。 config の RAILS_HOST / VITE_HOST がどちらも 127.0.0.1 固定なのを変えないtest-results/<test-id>/error-context.md に snapshot があるwebServer: reuseExistingServer: !CI なので、開発中に手動で RAILS_ENV=test_e2e bin/rails s -p 3001 を起動しておくと playwright がそれを使うplaywright-cli open http://127.0.0.1:5174/ui/ で繋げば dev 環境ではなく test 環境のフロント に対して手で触れる。 e2e test 環境の状態はテスト毎リセットされるが、 playwright-cli はリセットしないので、状態を作りたければ playwright-cli の前に手動で curl の POST /api/test_support/reset してから signup → 操作、という流れになる。