コンテンツにスキップ

Spec

ADDED Requirements

Requirement: Pull Request でトリガー

システムは Pull Request の作成・更新時に開発環境デプロイワークフローを自動的に実行しなければならない。

Scenario: Pull Request 作成

  • WHEN 新しい Pull Request が作成される
  • THEN 開発環境デプロイワークフローが自動的にトリガーされる

Scenario: Pull Request 更新

  • WHEN 既存の Pull Request にコードが push される
  • THEN 開発環境デプロイワークフローが再度トリガーされる

Scenario: main ブランチへの直接 push

  • WHEN main ブランチに直接 push される
  • THEN 開発環境デプロイワークフローはトリガーされない

Requirement: CI ステップの成功確認

システムは Lint、テスト、ビルドがすべて成功した場合のみデプロイを実行しなければならない。

Scenario: CI ステップすべて成功

  • WHEN Lint、テスト、ビルドがすべて成功する
  • THEN 開発環境へのデプロイが実行される

Scenario: CI ステップのいずれかが失敗

  • WHEN Lint、テスト、またはビルドのいずれかが失敗する
  • THEN 開発環境へのデプロイは実行されない

Requirement: OIDC 認証による Azure 接続

システムは OIDC 認証を使用して Azure に安全に接続しなければならない。

Scenario: OIDC 認証成功

  • WHEN GitHub Actions から Azure への認証を行う
  • THEN OIDC トークンを使用して認証が成功する

Scenario: OIDC 認証失敗

  • WHEN OIDC 認証情報が不正または期限切れ
  • THEN 認証が失敗し、デプロイが停止する

Requirement: Azure Blob Storage へのデプロイ

システムはビルド成果物を開発環境の Azure Blob Storage にアップロードしなければならない。

Scenario: デプロイ成功

  • WHEN ビルド成果物が dist ディレクトリに存在する
  • THEN すべてのファイルが開発環境のストレージアカウントにアップロードされる

Scenario: デプロイ失敗

  • WHEN ストレージアカウントへのアクセスに失敗する
  • THEN デプロイが失敗し、エラーが報告される

Requirement: デプロイ後の E2E テスト実行

システムは開発環境へのデプロイ完了後に E2E テストを自動的に実行しなければならない。

Scenario: デプロイ完了後の E2E テスト

  • WHEN 開発環境へのデプロイが成功する
  • THEN Playwright を使用した E2E テストが自動的に実行される

Scenario: E2E テスト成功

  • WHEN すべての E2E テストが合格する
  • THEN ワークフローが成功として完了する

Scenario: E2E テスト失敗

  • WHEN 1 つ以上の E2E テストが失敗する
  • THEN ワークフローが失敗として報告される

Requirement: Playwright ブラウザのセットアップ

システムは E2E テスト実行前に Playwright ブラウザをセットアップしなければならない。

Scenario: ブラウザのインストール

  • WHEN E2E テストを実行する前
  • THEN Playwright ブラウザ(Chromium)がインストールされる

Scenario: ブラウザキャッシュの利用

  • WHEN 以前に同じバージョンのブラウザをインストールしたことがある
  • THEN キャッシュからブラウザを復元し、インストール時間を短縮する

Requirement: E2E テストのリトライ機能

システムは一時的な失敗に対応するため、E2E テストのリトライ機能を提供しなければならない。

Scenario: 一時的なテスト失敗

  • WHEN E2E テストが一時的なタイミング問題で失敗する
  • THEN Playwright のリトライ機能により自動的に再試行される

Scenario: 継続的なテスト失敗

  • WHEN E2E テストがリトライ後も失敗する
  • THEN テストが失敗として報告される