Skip to main content

run-cli-e2e-locally

Run the CLI E2E tests locally using your own user credentials instead of a service principal. Use when: run e2e locally, run cli tests, test with my credentials, local e2e, e2e user auth, run fabric tests locally.

소스 정보

저장소
microsoft/rayfin
최근 소스 활동
2026년 10월 8일 20:46
감지된 SKILL.md 언어
영어
스타
651
포크
71

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
run-cli-e2e-locally
description
Run the CLI E2E tests locally using your own user credentials instead of a service principal. Use when: run e2e locally, run cli tests, test with my credentials, local e2e, e2e user auth, run fabric tests locally.
license
MIT
metadata
{"author":"rayfin","version":"2.0"}
Help a developer run the CLI E2E tests locally using their own Azure AD credentials. **Prerequisites**: - The repo is cloned and Rush dependencies are installed (`rush update`) - The CLI and E2E packages are built (`rush build --to rayfin-cli-e2e`) - The user has an Azure AD account with access to the target Fabric workspace ## Steps ### 1. Create the local environment file Create `packages/tools/cli-e2e/.env` (this file is gitignored): ```env E2E_AUTH_MODE=user E2E_ENVIRONMENT=daily E2E_TENANT_ID=<your-tenant-id> E2E_CLI_SOURCE=source USE_LOCAL_PACKAGES=true RAYFIN_E2E_WORKSPACE_NAME=DO_NOT_DELETE_AppDev_E2E_Workspace RAYFIN_TELEMETRY_OPTOUT=1 RAYFIN_ENCRYPTION_FALLBACK_ENABLED=true ``` Replace `<your-tenant-id>` with the user's Azure AD tenant ID. If the user doesn't know their tenant ID, suggest: ```bash rayfin login status ``` or check the Azure Portal under **Microsoft Entra ID → Overview → Tenant ID**. ### 2. Run the tests From `packages/tools/cli-e2e`: ```bash rushx test:e2e ``` **Login is automatic.** The test suite includes a `globalSetup` that checks for an existing user session before tests run. If no valid user session exists, it automatically runs `rayfin login --tenant <E2E_TENANT_ID>` which opens the browser for interactive sign-in. After authenticating once, subsequent test runs reuse the cached session without prompting again. To run a specific test file: ```bash rushx test:e2e -- src/init/init.test.ts ``` To run with coverage: ```bash rushx test:e2e:coverage ``` To run in watch mode during development: ```bash rushx test:e2e:watch ``` ### 3. Run the Playwright browser E2E tests First install Playwright browsers (one-time): ```bash npx playwright install chromium ``` Then run the browser tests: ```bash rushx test:e2e:browser ``` **Note**: The browser tests deploy to a Fabric workspace and navigate to the hosted URL. They require the user's account to have Contributor access to the `DO_NOT_DELETE_AppDev_E2E_Workspace` workspace. The Playwright tests do **not** use the Vitest globalSetup, so the user must have a valid session from a prior `rushx test:e2e` run or manual `rayfin login --tenant <id>`. ### 4. Troubleshooting | Symptom | Fix | |---------|-----| | `E2E_AUTH_MODE=user requires E2E_TENANT_ID to be set` | Fill in `E2E_TENANT_ID` in your `.env` file | | `Interactive login failed` + browser did not open | Run manually: `rayfin login --tenant <id>` | | `Silent token acquisition failed` | Token expired — re-run `rayfin login --tenant <id>` or delete `~/.rayfin/auth.json` and retry | | `Workspace not found` | Verify your account has access to `DO_NOT_DELETE_AppDev_E2E_Workspace` in the daily Fabric environment | | Tests skip with `Skipped: authMode === 'user'` | Expected — SP-specific tests are skipped in user mode | | Tests skip with `data-client tests require SP credentials` | Expected — data-client tests need SP secrets | | Keychain errors (WSL/containers) | Set `RAYFIN_ENCRYPTION_FALLBACK_ENABLED=true` in `.env` | | Windows libuv assertion crash during login | Harmless — the globalSetup checks CLI output content, not exit code | ## How It Works - **Automatic login via globalSetup**: The Vitest config references `src/global-setup.ts` which runs before all tests. When `E2E_AUTH_MODE=user`, it checks `rayfin login status` output. If not signed in as a user, it triggers `rayfin login --tenant <E2E_TENANT_ID>` (opens browser). On subsequent runs, the cached session is reused and login is skipped. - **Output-based detection**: On Windows, `rayfin login` may crash during process cleanup (libuv assertion) even after success. The setup checks for `"Signed in successfully"` in stdout rather than relying on exit code. - **Auth state sharing**: CLI commands in tests inherit the user's auth from `~/.rayfin/auth.json`. Direct Fabric API calls acquire a token silently from the MSAL cache via the CLI's `getAuthenticatedToken()` function. - **Test skipping**: Service principal-specific tests (SP login, SP logout) are automatically skipped via `it.skipIf(authMode === 'user')`. - **CI isolation**: CI always sets `E2E_AUTH_MODE=sp` with pipeline secrets. Local `.env` files are gitignored and never affect CI.
GitHub에서 보기