Skip to content

E2E: auth 系シナリオ (whoami / auto-refresh) が実行順序・環境依存で間欠的に 401 になる #142

Description

@miya0001

概要

E2E の auth 系シナリオ (auth.feature) が間欠的に 401 で落ちる。落ちるのは常に以下の組み合わせ (全部または一部):

  1. Display user info when logged in (geonic whoamiAuthentication failed)
  2. Whoami with JSON format (同上)
  3. Automatic token refresh on 401 (geonic entities listAuthentication failed)

いずれも Given I am logged in (tenant-admin の /auth/login 直 fetch) は成功した直後に、CLI サブプロセスの認証付きリクエストが 401 になる。

証拠 (2026-07-14 ローカル調査)

同一コード・同一マシンでの実行結果:

時刻 ブランチ 実行方法 結果
14:53 fix-138 (本体最新) npm run test:e2e 141 全パス
14:56 fix-138 npm run test:e2e 141 全パス
15:04 fix-139 (本体 pinned 旧) npm run test:e2e 1 failed (whoami)
15:08-12 fix-139 npx cucumber-js auth.feature:37 ×3 全パス
15:2x fix-139 (rebase 後、本体最新) npm run test:e2e 3 failed
15:3x fix-138 (変更なし) npm run test:e2e 3 failed (同一シナリオ)
15:4x fix-139 npx cucumber-js tests/e2e/features/auth.feature (パス引数あり・全141実行) 141 全パス
15:4x fix-139 npm run test:e2e 3 failed
15:5x fix-139 npx cucumber-js (引数なし) 3 failed

観察できたパターン:

  • パス引数付き実行 (シナリオ実行順が変わる) では落ちたことがない。引数なし実行は同時期に高確率で落ちる → 実行順序依存の状態汚染が濃厚
  • CLI 変更の有無と無関係 (変更ゼロの base ブランチで再現)
  • 本体のバージョン (pinned 326b12aa / 最新 53e27682) とも無関係に発生
  • マシン負荷・時間帯で発生率が変わる。同一invocationでも 14時台は 2連続パス、15時台は連続失敗

CI への影響

週次互換性チェック 2026-07-13 の失敗 (run) はこの flake が原因とみられる (retry 3 回とも whoami 401)。#140 の調査により、当該 run は lockfile バグで旧 pinned 本体をテストしていたことが判明しており (= 7/6 の成功 run と同一コード)、コード互換性の問題ではありえない。

調査の手がかり

  • 落ちる 3 シナリオは全部 tenant-admin ログイン + 認証付きリクエスト (or リフレッシュフロー)。super admin 系は落ちない
  • loginAttempts コレクションは preserved (Before フックで baseline 復元) だが、サーバー内のインメモリなレート制限/ロックアウト状態はシナリオ間でリセットされない可能性
  • CLI のプロアクティブトークンリフレッシュ (fix: token+apiKey 共存時のセッション切れを修正 #98) が絡む可能性 (Automatic token refresh シナリオも落ちる)
  • ローカル調査時、別プロセスの geonicdb local-server が port 3000 を占有しており、E2E サーバーは 3001 にフォールバックしていた時間帯がある (直接の因果は未確認)

期待する対応

  1. 根本原因の特定 (シナリオ実行順を固定/シャッフルして再現条件を絞る、サーバー側 401 の理由をログで捕捉する等)
  2. 落ちる原因となる状態汚染の解消、または Before フックでのサーバー側インメモリ状態リセット
  3. それまでの暫定として、当該シナリオの安定化 (リトライではなく原因ベースで)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Priority: HighThe issue has high prioritybugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions