Agent Skills › microsoft/rayfin › run-cli-e2e-locally

run-cli-e2e-locally

GitHub

指导开发者使用个人凭据在本地运行 CLI E2E 测试。涵盖环境配置、自动登录机制、Playwright 浏览器测试及故障排查,旨在替代服务主体进行用户身份验证的端到端测试。

.github/skills/run-cli-e2e-locally/SKILL.md microsoft/rayfin

Trigger Scenarios

本地运行 E2E 测试 使用个人凭据测试 CLI 解决 E2E 认证失败问题

Install

npx skills add microsoft/rayfin --skill run-cli-e2e-locally -g -y
More Options

Non-standard path

npx skills add https://github.com/microsoft/rayfin/tree/main/.github/skills/run-cli-e2e-locally -g -y

Use without installing

npx skills use microsoft/rayfin@run-cli-e2e-locally

指定 Agent (Claude Code)

npx skills add microsoft/rayfin --skill run-cli-e2e-locally -a claude-code -g -y

安装 repo 全部 skill

npx skills add microsoft/rayfin --all -g -y

预览 repo 内 skill

npx skills add microsoft/rayfin --list

SKILL.md

Frontmatter
{
    "name": "run-cli-e2e-locally",
    "license": "MIT",
    "metadata": {
        "author": "rayfin",
        "version": "2.0"
    },
    "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."
}

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):

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:

rayfin login status

or check the Azure Portal under Microsoft Entra ID → Overview → Tenant ID.

2. Run the tests

From packages/tools/cli-e2e:

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:

rushx test:e2e -- src/init/init.test.ts

To run with coverage:

rushx test:e2e:coverage

To run in watch mode during development:

rushx test:e2e:watch

3. Run the Playwright browser E2E tests

First install Playwright browsers (one-time):

npx playwright install chromium

Then run the browser tests:

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.

Version History

  • 0979439 Current 2026-10-18 22:48

Same Skill Collection

.github/skills/hotfix-release/SKILL.md
.github/skills/launch-vscode-extension/SKILL.md
.github/skills/openspec-apply-change/SKILL.md
.github/skills/openspec-archive-change/SKILL.md
.github/skills/openspec-bulk-archive-change/SKILL.md
.github/skills/openspec-continue-change/SKILL.md
.github/skills/openspec-explore/SKILL.md
.github/skills/openspec-ff-change/SKILL.md
.github/skills/openspec-new-change/SKILL.md
.github/skills/openspec-onboard/SKILL.md
.github/skills/openspec-sync-specs/SKILL.md
.github/skills/openspec-verify-change/SKILL.md
.github/skills/privacy-dfd/SKILL.md
.github/skills/rayfin-cli-ux/SKILL.md
.github/skills/react-best-practices/SKILL.md
.github/skills/vscode-react-webview-architecture/SKILL.md
.github/skills/vscode-webview-trpc-messaging/SKILL.md
samples/data-app/.agents/skills/app-design/SKILL.md
samples/data-app/.agents/skills/app-validation/SKILL.md
samples/data-app/.agents/skills/dax-authoring/SKILL.md
samples/data-app/.agents/skills/fabric-cli/SKILL.md
samples/data-app/.agents/skills/fabric-sdk/SKILL.md
samples/data-app/.agents/skills/playwright-cli/SKILL.md
samples/data-app/.agents/skills/query-design/SKILL.md
samples/data-app/.agents/skills/schema-discovery/SKILL.md
samples/data-app/.agents/skills/visuals/SKILL.md
.github/skills/react-clean-architecture/SKILL.md
plugin/skills/rayfin-getting-started/SKILL.md
skills/rayfin-getting-started/SKILL.md

Metadata

Files
0
Version
0979439
Hash
1425d2af
Indexed
2026-10-18 22:48

ホーム - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-10-23 10:09
浙ICP备14020137号-1