@frontmcp/testing 1.8.5 → 1.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auth/mock-oauth-server.d.ts.map +1 -1
- package/auth/token-factory.d.ts +2 -2
- package/auth/token-factory.d.ts.map +1 -1
- package/client/mcp-test-client.d.ts +12 -1
- package/client/mcp-test-client.d.ts.map +1 -1
- package/esm/fixtures/index.mjs +545 -260
- package/esm/index.mjs +702 -383
- package/esm/package.json +6 -6
- package/esm/perf/index.mjs +465 -308
- package/expect.d.ts +12 -11
- package/expect.d.ts.map +1 -1
- package/fixtures/fixture-types.d.ts +22 -4
- package/fixtures/fixture-types.d.ts.map +1 -1
- package/fixtures/index.js +544 -252
- package/fixtures/test-fixture.d.ts +6 -5
- package/fixtures/test-fixture.d.ts.map +1 -1
- package/http-mock/http-mock.d.ts +5 -3
- package/http-mock/http-mock.d.ts.map +1 -1
- package/http-mock/http-mock.types.d.ts +17 -6
- package/http-mock/http-mock.types.d.ts.map +1 -1
- package/http-mock/index.d.ts +1 -1
- package/http-mock/index.d.ts.map +1 -1
- package/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/index.js +710 -384
- package/package.json +6 -6
- package/perf/baseline-store.d.ts +1 -1
- package/perf/baseline-store.d.ts.map +1 -1
- package/perf/index.js +468 -321
- package/perf/perf-test.d.ts.map +1 -1
- package/perf/report-generator.d.ts +1 -1
- package/perf/report-generator.d.ts.map +1 -1
- package/server/port-registry.d.ts +7 -1
- package/server/port-registry.d.ts.map +1 -1
- package/server/test-server.d.ts +10 -1
- package/server/test-server.d.ts.map +1 -1
- package/transport/error-utils.d.ts +15 -0
- package/transport/error-utils.d.ts.map +1 -0
- package/transport/streamable-http.transport.d.ts.map +1 -1
package/expect.d.ts
CHANGED
|
@@ -16,9 +16,10 @@
|
|
|
16
16
|
* });
|
|
17
17
|
* ```
|
|
18
18
|
*/
|
|
19
|
-
import { expect as
|
|
19
|
+
import type { expect as JestExpect } from '@jest/globals';
|
|
20
20
|
import type { Matchers } from 'expect';
|
|
21
21
|
import type { McpMatchers } from './matchers/matcher-types';
|
|
22
|
+
type JestExpectType = typeof JestExpect;
|
|
22
23
|
/**
|
|
23
24
|
* Extended Jest matchers interface that includes MCP matchers
|
|
24
25
|
*/
|
|
@@ -41,17 +42,17 @@ type McpExpectMatchers<R extends void | Promise<void>, T = unknown> = Matchers<R
|
|
|
41
42
|
*/
|
|
42
43
|
interface McpExpect {
|
|
43
44
|
<T = unknown>(actual: T): McpExpectMatchers<void, T>;
|
|
44
|
-
anything(): ReturnType<
|
|
45
|
-
any(classType: unknown): ReturnType<
|
|
46
|
-
arrayContaining<E = unknown>(arr: readonly E[]): ReturnType<
|
|
47
|
-
objectContaining<E = Record<string, unknown>>(obj: E): ReturnType<
|
|
48
|
-
stringContaining(str: string): ReturnType<
|
|
49
|
-
stringMatching(str: string | RegExp): ReturnType<
|
|
45
|
+
anything(): ReturnType<JestExpectType['anything']>;
|
|
46
|
+
any(classType: unknown): ReturnType<JestExpectType['any']>;
|
|
47
|
+
arrayContaining<E = unknown>(arr: readonly E[]): ReturnType<JestExpectType['arrayContaining']>;
|
|
48
|
+
objectContaining<E = Record<string, unknown>>(obj: E): ReturnType<JestExpectType['objectContaining']>;
|
|
49
|
+
stringContaining(str: string): ReturnType<JestExpectType['stringContaining']>;
|
|
50
|
+
stringMatching(str: string | RegExp): ReturnType<JestExpectType['stringMatching']>;
|
|
50
51
|
not: {
|
|
51
|
-
arrayContaining<E = unknown>(arr: readonly E[]): ReturnType<
|
|
52
|
-
objectContaining<E = Record<string, unknown>>(obj: E): ReturnType<
|
|
53
|
-
stringContaining(str: string): ReturnType<
|
|
54
|
-
stringMatching(str: string | RegExp): ReturnType<
|
|
52
|
+
arrayContaining<E = unknown>(arr: readonly E[]): ReturnType<JestExpectType['not']['arrayContaining']>;
|
|
53
|
+
objectContaining<E = Record<string, unknown>>(obj: E): ReturnType<JestExpectType['not']['objectContaining']>;
|
|
54
|
+
stringContaining(str: string): ReturnType<JestExpectType['not']['stringContaining']>;
|
|
55
|
+
stringMatching(str: string | RegExp): ReturnType<JestExpectType['not']['stringMatching']>;
|
|
55
56
|
};
|
|
56
57
|
extend(matchers: Record<string, unknown>): void;
|
|
57
58
|
assertions(num: number): void;
|
package/expect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../src/expect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"expect.d.ts","sourceRoot":"","sources":["../src/expect.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,13 +20,18 @@ export interface TestConfig {
|
|
|
20
20
|
* @example 'demo-e2e-public' - Uses ports 50000-50009
|
|
21
21
|
*/
|
|
22
22
|
project?: string;
|
|
23
|
-
/** Port to run server on (default
|
|
23
|
+
/** Port to run server on (default, or `0`: auto-select a free port from the project range) */
|
|
24
24
|
port?: number;
|
|
25
25
|
/** Transport type (default: 'streamable-http') */
|
|
26
26
|
transport?: 'sse' | 'streamable-http';
|
|
27
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Describes the auth mode of the server under test. The server entry file decides its own auth, so
|
|
29
|
+
* this does not reconfigure it; the fixture uses it to (1) keep the `mcp` client anonymous when
|
|
30
|
+
* `mode` is `'public'` (unless `publicMode` says otherwise) and (2) pass it to the server process as
|
|
31
|
+
* `FRONTMCP_TEST_AUTH_MODE` / `FRONTMCP_TEST_AUTH_TYPE`, which the entry file can read.
|
|
32
|
+
*/
|
|
28
33
|
auth?: {
|
|
29
|
-
mode?: 'public' | 'orchestrated';
|
|
34
|
+
mode?: 'public' | 'orchestrated' | 'local' | 'remote' | 'transparent';
|
|
30
35
|
type?: 'local' | 'remote';
|
|
31
36
|
};
|
|
32
37
|
/**
|
|
@@ -141,6 +146,7 @@ export interface ServerFixture {
|
|
|
141
146
|
info: {
|
|
142
147
|
baseUrl: string;
|
|
143
148
|
port: number;
|
|
149
|
+
/** The server process (the one listening on `port`, when it can be found; else its shell) */
|
|
144
150
|
pid?: number;
|
|
145
151
|
};
|
|
146
152
|
/**
|
|
@@ -192,7 +198,10 @@ export type TestFn = (fixtures: TestFixtures) => Promise<void> | void;
|
|
|
192
198
|
*/
|
|
193
199
|
export interface TestWithFixtures {
|
|
194
200
|
(name: string, fn: TestFn): void;
|
|
195
|
-
/**
|
|
201
|
+
/**
|
|
202
|
+
* Configure fixtures. At file level it applies to the whole file; inside a `test.describe` it applies
|
|
203
|
+
* to that block only (and blocks nested in it), inheriting the outer configuration.
|
|
204
|
+
*/
|
|
196
205
|
use(config: TestConfig): void;
|
|
197
206
|
/** Create a describe block */
|
|
198
207
|
describe: typeof describe;
|
|
@@ -222,5 +231,14 @@ export interface TestWithFixtures {
|
|
|
222
231
|
only(name: string, fn: TestFn): void;
|
|
223
232
|
/** Mark test as todo (not implemented) */
|
|
224
233
|
todo(name: string): void;
|
|
234
|
+
/**
|
|
235
|
+
* Parameterized test. Each row is passed after the fixtures; titles support Jest's
|
|
236
|
+
* `%s` / `%d` / `$key` placeholders.
|
|
237
|
+
*
|
|
238
|
+
* @example
|
|
239
|
+
* test.each([['add', 1, 2, 3], ['sub', 3, 1, 2]])('%s', async ({ mcp }, tool, a, b, expected) => { ... });
|
|
240
|
+
*/
|
|
241
|
+
each<Row extends readonly unknown[]>(table: ReadonlyArray<Row>): (name: string, fn: (fixtures: TestFixtures, ...row: Row) => Promise<void> | void) => void;
|
|
242
|
+
each<Value>(table: ReadonlyArray<Value>): (name: string, fn: (fixtures: TestFixtures, value: Value) => Promise<void> | void) => void;
|
|
225
243
|
}
|
|
226
244
|
//# sourceMappingURL=fixture-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixture-types.d.ts","sourceRoot":"","sources":["../../src/fixtures/fixture-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAM9E;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"fixture-types.d.ts","sourceRoot":"","sources":["../../src/fixtures/fixture-types.ts"],"names":[],"mappings":"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"}
|