Files
dify/cli/test/e2e/helpers/skip.ts
gigglewang0417 3cc20de830 test(cli-e2e): add full e2e suite — auth/config/discovery/run/output/error-handling/framework/help
New suites:
- auth/login.e2e.ts
- config/config-init.e2e.ts, config-rw.e2e.ts
- error-handling/error-messages.e2e.ts, exit-codes.e2e.ts
- framework/global-flags.e2e.ts, help.e2e.ts
- output/json-yaml-output.e2e.ts, table-output.e2e.ts

Updated suites:
- auth: devices / logout / status / use / whoami
- discovery: describe-app / get-app-all-workspaces / get-app-list / get-app-single
- run: run-app-basic / conversation / file / hitl / streaming

Infra:
- fixtures/apps: 9 DSL files for app provisioning
- setup/global-setup.ts: multi-token provisioning + workspace discovery
- setup/env.ts: capability injection
- helpers/skip.ts: conditional skip helper
- vitest.e2e.config.ts: include help.e2e.ts in both local and staging modes
2026-06-04 17:47:13 +08:00

55 lines
1.8 KiB
TypeScript

import type { SuiteAPI, TestAPI } from 'vitest'
import type { DifyEdition, E2ECapabilities } from '../setup/env.js'
import { describe, it } from 'vitest'
// Explicit casts bridge the ChainableFunction vs SuiteAPI/TestAPI
// incompatibility introduced in [email protected] (TS2322 / TS4058).
// Using 'unknown' as an intermediate to satisfy strict no-explicit-any rules.
export function optionalDescribe(condition: boolean): SuiteAPI {
return (condition ? describe : describe.skip) as unknown as SuiteAPI
}
export function optionalIt(condition: boolean): TestAPI {
return (condition ? it : it.skip) as unknown as TestAPI
}
/**
* Return an `it` variant that only runs in Enterprise Edition (EE) mode.
*
* Usage:
* const eeIt = enterpriseOnlyIt(caps)
* eeIt('[EE][P0] workspace switching works across two workspaces', async () => { … })
*
* In CE mode the test is automatically skipped with a clear label.
* The [EE] tag in the test name is purely informational and documents the
* requirement in the test report.
*/
export function enterpriseOnlyIt(caps: E2ECapabilities): TestAPI {
return optionalIt(caps.edition === 'ee')
}
/**
* Return a `describe` variant that only runs in Enterprise Edition (EE) mode.
*
* Usage:
* const eeDescribe = enterpriseOnlyDescribe(caps)
* eeDescribe('[EE] cross-workspace suite', () => { … })
*/
export function enterpriseOnlyDescribe(caps: E2ECapabilities): SuiteAPI {
return optionalDescribe(caps.edition === 'ee')
}
/**
* Convenience: return true when capabilities indicate Enterprise Edition.
* Use for inline guards inside regular `it` blocks.
*
* @example
* it('cross-workspace query [EE]', async () => {
* if (!isEE(caps)) return // skip silently in CE
* …
* })
*/
export function isEE(caps: { edition: DifyEdition }): boolean {
return caps.edition === 'ee'
}