[GRDM-62502] E2Eテストのエラー改善 - #49
Conversation
…n workflow addon E2E
📊 E2E Test ResultsExcel summaries and screenshots are available as artifacts: Run ID: 32193588198 |
📊 E2E Test ResultsExcel summaries and screenshots are available as artifacts: Run ID: 32201871528 |
📊 E2E Test ResultsExcel summaries and screenshots are available as artifacts: Run ID: 32212348053 |
74cf39f to
af0afbc
Compare
📊 E2E Test ResultsExcel summaries and screenshots are available as artifacts: Run ID: 32229634407 |
📊 E2E Test ResultsExcel summaries and screenshots are available as artifacts: Run ID: 32229983261 |
1 similar comment
📊 E2E Test ResultsExcel summaries and screenshots are available as artifacts: Run ID: 32229983261 |
📊 E2E Test ResultsExcel summaries and screenshots are available as artifacts: Run ID: 32229983261 |
📊 E2E Test ResultsExcel summaries and screenshots are available as artifacts: Run ID: 32254272000 |
3 similar comments
📊 E2E Test ResultsExcel summaries and screenshots are available as artifacts: Run ID: 32254272000 |
📊 E2E Test ResultsExcel summaries and screenshots are available as artifacts: Run ID: 32254272000 |
📊 E2E Test ResultsExcel summaries and screenshots are available as artifacts: Run ID: 32254272000 |
Purpose
問題1: 再ログインステップ直後のスクリーンショットが確率的に失敗する
Workflowアドオンの E2E(自動有効化 / 公開範囲の設定 の institution 変種)で、「テンプレート管理プロジェクトのURLを開き、テンプレート登録者でログインする」ステップ直後のスクリーンショットが
Page.screenshot: Protocol error (Page.captureScreenshot): Unable to capture screenshotで失敗することがあります(https://github.com/RCOSDP/RDM-e2e-test-nb/actions/runs/32126230244 の attempt 1/2 双方で発生。rdm=develop 構成の run でも同一シグネチャを確認)。原因は、このステップが
grdm.login(FakeCAS 経路は submit クリック後に何も待たずに戻る)の直後に終わるため、run_pw のステップ後スクリーンショットが FakeCAS → CAS → RDM のクロスオリジンリダイレクト連鎖と競合することです。Chromium はクロスオリジン遷移でレンダラプロセスを交換するため、描画面が存在しない瞬間にPage.captureScreenshotが当たるとこのエラーになります。序盤のログインステップはexpect_dashboardで着地を待っているため発生せず、待ちの無いこのステップだけで発生します。問題2: 「無効にする」ボタンのロケータが行スコープなしで、テンプレートが2つあると strict mode violation になる
有効化・無効化 NB は
#localWorkflowsPanel/#activationsPanel直下の「無効にする」ボタンを行スコープなしで参照しています。同じテンプレート管理プロジェクトを共有する先行 NB が(問題1などで)失敗して後始末が走らずテンプレートが残ると、ボタンが2要素に一致して strict mode violation になります(失敗のカスケード)。問題3: timeout未指定の expect がライブラリ既定の5秒に落ちて失敗源になる
assertion 全 3160 箇所のうち 199 箇所(38 ノートブック)が timeout 未指定で、Playwright の expect 既定 5000ms で動いています。
transition_timeout(慣行値 60 秒)で外部制御する設計の潰し忘れで、環境が遅い leg では恒常的な失敗になります(例: ファイル基本操作の「名前を変更」メニュー待ちが NII Storage leg で 5 秒超過、本PRのCIでも再現)。意図的に短く待つ箇所はすべて明示引数(500/1000/2000ms)で書かれており、未指定箇所だけが既定値に依存しています。問題4: ファイル移動などのドラッグ&ドロップが、レイアウト変動で無音で不発になる
S3 系 leg で「移動に成功しました」トーストが 60〜300 秒待っても出ない失敗が反復していました。サーバログ(WaterButler / MinIO)を突き合わせたところ、move リクエスト自体がブラウザから発行されておらず、失敗時の DOM には利用規約の同意バナー(
accepted_terms_of_service未設定ユーザーにページ描画のたびに挿入されるジャンボトロン)が出現してページ全体を押し下げていました。grdm.drag_and_dropは事前に取得した座標へマウス操作するだけなので、座標取得とドロップの間にレイアウトが動くと何にも当たらず、エラーも出ません。Changes
workflow_nameの行スコープ(//tr[.//strong[text()="{workflow_name}"]])に変更drag_and_dropを強化。ドロップ先とソースを scroll_into_view してビューポート内にあることを確認し、双方の座標が連続する 2 回の測定で一致する(レイアウトが静止している)まで待ってからマウス操作を開始する。静止しない場合は無音で外す代わりに明示的に失敗する。jQuery UI はドラッグ開始時にドロップ先位置をキャッシュするため、ドラッグ中の座標補正ではなく開始前の静止確認を不変条件としたinit_pw_contextでexpect.set_options(timeout=60000)を設定し、timeout 未指定の expect の既定を transition_timeout の慣行値に引き上げ。明示指定(短いプローブ含む)には影響しない。ノートブック側の編集は不要で、以後 timeout の書き忘れ自体が安全になるTicket
GRDM-62502
Custom Test Configuration
Migration レグは develop の migration 不具合(
osf.0267_split_name_fieldsが現行モデルの副作用を実行するため、後から追加されたosf_osfuser.ial列の参照で 20250906 からのアップグレードが失敗する)に当たるため、修正ブランチ(yacchin1205/RDM2-osf.io fix/migration-historical-models)を指定して検証します。RDM-osf.io 側へ同修正の PR を提出予定です。