lacuna-cli 0.1.8 → 0.2.0
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/README.md +94 -11
- package/dist/agent/context.d.ts +1 -0
- package/dist/agent/context.d.ts.map +1 -1
- package/dist/agent/context.js +141 -6
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/fix-loop.d.ts +1 -0
- package/dist/agent/fix-loop.d.ts.map +1 -1
- package/dist/agent/fix-loop.js +245 -40
- package/dist/agent/fix-loop.js.map +1 -1
- package/dist/agent/generator.d.ts +7 -0
- package/dist/agent/generator.d.ts.map +1 -1
- package/dist/agent/generator.js +205 -35
- package/dist/agent/generator.js.map +1 -1
- package/dist/agent/loop.d.ts +1 -1
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +154 -11
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/prompts/index.d.ts +4 -1
- package/dist/agent/prompts/index.d.ts.map +1 -1
- package/dist/agent/prompts/index.js +182 -37
- package/dist/agent/prompts/index.js.map +1 -1
- package/dist/agent/prompts/react-native.d.ts.map +1 -1
- package/dist/agent/prompts/react-native.js +15 -4
- package/dist/agent/prompts/react-native.js.map +1 -1
- package/dist/agent/prompts/react.js +1 -1
- package/dist/agent/prompts/runners/vitest.js +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +4 -0
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/fix.d.ts +1 -0
- package/dist/commands/fix.d.ts.map +1 -1
- package/dist/commands/fix.js +24 -5
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +10 -0
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +6 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +4 -0
- package/dist/commands/run.js.map +1 -1
- package/dist/lib/config.d.ts +10 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +43 -21
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/extract-error.d.ts.map +1 -1
- package/dist/lib/extract-error.js +8 -2
- package/dist/lib/extract-error.js.map +1 -1
- package/dist/lib/reporter.d.ts.map +1 -1
- package/dist/lib/reporter.js +11 -1
- package/dist/lib/reporter.js.map +1 -1
- package/dist/lib/typecheck.d.ts +1 -0
- package/dist/lib/typecheck.d.ts.map +1 -1
- package/dist/lib/typecheck.js +119 -7
- package/dist/lib/typecheck.js.map +1 -1
- package/dist/lib/validate.d.ts +37 -1
- package/dist/lib/validate.d.ts.map +1 -1
- package/dist/lib/validate.js +659 -11
- package/dist/lib/validate.js.map +1 -1
- package/lacuna.schema.json +150 -0
- package/package.json +14 -7
- package/oclif.manifest.json +0 -309
|
@@ -6,6 +6,10 @@ import { detectVue, buildVueGuidance } from './vue.js';
|
|
|
6
6
|
import { buildJsCauses } from './runners/js-common.js';
|
|
7
7
|
import { buildVitestCauses } from './runners/vitest.js';
|
|
8
8
|
import { buildTsRule } from './runners/typescript.js';
|
|
9
|
+
// Existing test files longer than this switch to surgical patch mode (<code_patch>) instead
|
|
10
|
+
// of full-file rewrites — rewriting a large file risks hitting the output token limit mid-file.
|
|
11
|
+
// Shared by the generate, fix, and retry prompts so they never disagree about the mode.
|
|
12
|
+
export const PATCH_MODE_LINE_THRESHOLD = 300;
|
|
9
13
|
// ─── Setup file mock extractor ────────────────────────────────────────────────
|
|
10
14
|
function extractGlobalNextMocks(setupCode) {
|
|
11
15
|
const mocked = [];
|
|
@@ -133,6 +137,21 @@ function detectTypeScriptErrors(errorOutput) {
|
|
|
133
137
|
parts.push(` '${wrongProp}' → not valid. Use one of: ${available.slice(0, 12).join(', ')}${available.length > 12 ? ' …' : ''}`);
|
|
134
138
|
}
|
|
135
139
|
}
|
|
140
|
+
// Property errors on a NAMED type (e.g. "... does not exist on type 'BusinessSwap'") — the
|
|
141
|
+
// members can't be enumerated from the message like the inline-object case above, but the
|
|
142
|
+
// error must still be surfaced. Without this it was excluded from "Additional errors" by the
|
|
143
|
+
// TS2339/2551/2561 lookahead below and silently dropped from the targeted guidance.
|
|
144
|
+
const namedPropErrors = [...errorOutput.matchAll(/'(\w+)' does not exist (?:on|in) type '([^'{][^']*)'/g)];
|
|
145
|
+
if (namedPropErrors.length > 0) {
|
|
146
|
+
const seen = new Set();
|
|
147
|
+
for (const m of namedPropErrors) {
|
|
148
|
+
const key = `${m[1]}::${m[2]}`;
|
|
149
|
+
if (seen.has(key))
|
|
150
|
+
continue;
|
|
151
|
+
seen.add(key);
|
|
152
|
+
parts.push(`• '${m[1]}' is not a member of type '${m[2].slice(0, 80)}' — check the source file / TYPE DEFINITIONS for the correct name; do not invent one.`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
136
155
|
const suggestions = [...new Set([...errorOutput.matchAll(/Did you mean(?: to write)? '(\w+)'\?/g)].map(m => m[1]))];
|
|
137
156
|
if (suggestions.length > 0) {
|
|
138
157
|
parts.push(`• Compiler suggestion: use ${suggestions.map(s => `'${s}'`).join(', ')}`);
|
|
@@ -247,21 +266,36 @@ export function buildSystemPrompt(env) {
|
|
|
247
266
|
4. Only import from packages listed in PROJECT DEPENDENCIES. Do not invent packages that are not listed.
|
|
248
267
|
5. When a SHARED MOCK FILE is provided, its exported names are listed under "Available exports". Before writing the test, go through that list and identify every mock that relates to what the source file does. Import and use ALL of those mocks. Never re-create inline ${mockApi}.fn() for anything already exported from the mocks file.
|
|
249
268
|
CRITICAL — never rename or change the casing of existing mock exports.
|
|
250
|
-
6. If you need
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
269
|
+
6. If you need to add or change mocks in the shared mock file:
|
|
270
|
+
- When the SHARED MOCK FILE already EXISTS: use // ---MOCKS_PATCH--- (surgical patch — preferred, avoids rewriting the whole file).
|
|
271
|
+
After the separator, emit only the sections that change using these operations:
|
|
272
|
+
// @@@ REPLACE:
|
|
273
|
+
<exact existing text copied verbatim from the mock file>
|
|
274
|
+
// @@@ WITH:
|
|
275
|
+
<replacement text>
|
|
276
|
+
// @@@ END
|
|
277
|
+
// @@@ APPEND_EXPORT:
|
|
278
|
+
export const mockNewThing = ${mockApi}.fn()
|
|
279
|
+
// @@@ END
|
|
280
|
+
// @@@ ADD_TO_BEFOREEACH:
|
|
281
|
+
mockNewThing.mockReset()
|
|
282
|
+
// @@@ END
|
|
283
|
+
REPLACE anchor must match character-for-character — copy it from the SHARED MOCK FILE shown above.
|
|
284
|
+
If you have NO changes to the mock file, OMIT both separators entirely.
|
|
285
|
+
- When the SHARED MOCK FILE does NOT exist yet: use // ---MOCKS_FILE--- to return the full new file content.
|
|
254
286
|
CRITICAL — the mocks file must contain ONLY: ${mockApi}.fn() mock definitions, ${mockApi}.mock() module stubs, shared mock objects/constants, and beforeEach reset hooks. NEVER write describe(), it(), test(), or expect() calls in the mocks file.
|
|
287
|
+
7. If a SHARED MOCK FILE (does not exist yet) section is shown — create it for any mocks you need and return it using the // ---MOCKS_FILE--- separator.
|
|
255
288
|
8. If a TEST SETUP FILE is shown, assume its globals and matchers are already available. Do NOT import or re-declare them.` : `
|
|
256
289
|
3. Use the project's import conventions as shown in the source file and existing tests.
|
|
257
290
|
4. Only import from packages listed in PROJECT DEPENDENCIES. Do not invent packages that are not listed.`;
|
|
258
291
|
const tsRule = isTS ? buildTsRule(mockApi) : '';
|
|
259
292
|
const ruleCount = isTS ? 10 : (isJS ? 9 : 6);
|
|
260
293
|
const jsOutputRules = isJS ? `
|
|
261
|
-
${ruleCount + 2}. Inside <code_output>: output ONLY the test file
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
294
|
+
${ruleCount + 2}. Inside <code_output>: output ONLY the test file, optionally followed by mock file changes.
|
|
295
|
+
- To patch an EXISTING mock file: append // ---MOCKS_PATCH--- then the patch ops (REPLACE/APPEND_EXPORT/ADD_TO_BEFOREEACH blocks).
|
|
296
|
+
- To create a NEW mock file: append // ---MOCKS_FILE--- then the full file content.
|
|
297
|
+
- If no mock changes needed: omit both separators.
|
|
298
|
+
NEVER put describe(), it(), test(), or expect() calls after either separator.
|
|
265
299
|
${ruleCount + 3}. NEVER output vitest.config.ts, jest.config.js, or any framework configuration. If an import cannot be resolved,
|
|
266
300
|
fix it by mocking it with ${mockApi}.mock() — NOT by modifying the test runner configuration.` : '';
|
|
267
301
|
const universalCauses = `- Wrong import paths (use the project's conventions — aliases where configured, relative paths otherwise)
|
|
@@ -292,6 +326,7 @@ ${ruleCount + 1}. Structure ALL output using exactly these two XML blocks — no
|
|
|
292
326
|
// complete test file here
|
|
293
327
|
</code_output>
|
|
294
328
|
CRITICAL: Once you open <code_output>, ALL remaining output must be code. Finish ALL reasoning inside <thinking> first.
|
|
329
|
+
THINKING BUDGET: keep <thinking> brief — roughly 30 lines or fewer. Record only the key facts you need (exact names, mock shapes, the plan), then open <code_output> and write the test immediately. Do NOT re-paste or quote large excerpts of the source or existing test file inside <thinking> — they are already provided above. A <thinking> block that runs to hundreds of lines will exhaust the token limit before any code is written and waste the entire attempt.
|
|
295
330
|
${ruleCount + 2 <= ruleCount + 1 ? '' : `${ruleCount + 2}. Inside <code_output>: do NOT wrap in markdown code fences.`}${jsOutputRules}
|
|
296
331
|
|
|
297
332
|
A good test suite you write will have:
|
|
@@ -310,7 +345,7 @@ You MUST wrap your reasoning inside <thinking> tags and your complete file outpu
|
|
|
310
345
|
}
|
|
311
346
|
// ─── Generate prompt ──────────────────────────────────────────────────────────
|
|
312
347
|
export function buildGeneratePrompt(args) {
|
|
313
|
-
const { sourceFile, env, existingTestCode, uncoveredFunctions, uncoveredLines, sourceImportPath, mocksCode, mocksImportPath, setupFileCode, packageDeps, tsconfigPaths, typeDefinitions, localImportPaths, localImportContents, reactMajorVersion, projectMemory, } = args;
|
|
348
|
+
const { sourceFile, env, existingTestCode, uncoveredFunctions, uncoveredLines, sourceImportPath, mocksCode, mocksImportPath, setupFileCode, packageDeps, tsconfigPaths, typeDefinitions, localImportPaths, localImportContents, reactMajorVersion, projectMemory, existingTestLineCount, } = args;
|
|
314
349
|
const sourceCode = compressSource(args.sourceCode);
|
|
315
350
|
const mockApi = env.testRunner === 'vitest' ? 'vi' : 'jest';
|
|
316
351
|
const parts = [];
|
|
@@ -343,7 +378,7 @@ export function buildGeneratePrompt(args) {
|
|
|
343
378
|
parts.push('```');
|
|
344
379
|
}
|
|
345
380
|
if (localImportContents) {
|
|
346
|
-
parts.push('\nUSED SYMBOL DEFINITIONS (extracted from files the component imports — only the specific symbols used, with function bodies collapsed to signature + return and class bodies collapsed to method signatures. Use this to find exact hook return shapes, service method names, and type definitions. Cross-check every hook mock against the hook\'s actual return statement here):');
|
|
381
|
+
parts.push('\nUSED SYMBOL DEFINITIONS (extracted from files the component imports — only the specific symbols used, with function bodies collapsed to signature + return and class bodies collapsed to method signatures. Use this to find exact hook return shapes, service method names, and type definitions. Cross-check every hook mock against the hook\'s actual return statement here):\nCRITICAL — when writing mocks for any service class or hook: list ONLY the methods/keys that appear in this section. Do NOT invent method names based on what sounds plausible. A fabricated method name causes "X.method is not a function" or "undefined.then(...)" crashes that break every test in the file.');
|
|
347
382
|
parts.push('```typescript');
|
|
348
383
|
parts.push(localImportContents);
|
|
349
384
|
parts.push('```');
|
|
@@ -364,7 +399,7 @@ export function buildGeneratePrompt(args) {
|
|
|
364
399
|
parts.push(`\nSHARED MOCK FILE (import from: '${mocksImportPath}')`);
|
|
365
400
|
if (exports.length > 0) {
|
|
366
401
|
parts.push(`Available exports: ${exports.join(', ')}`);
|
|
367
|
-
parts.push(`↑ Every name above ALREADY EXISTS in the mock file — do NOT re-declare any of them
|
|
402
|
+
parts.push(`↑ Every name above ALREADY EXISTS in the mock file — do NOT re-declare any of them. Only declare names that do NOT appear in this list.\n↑ Before writing the test, identify which of these match the source file's domain and import every relevant one. Do NOT create inline mocks for anything already in this list.\n↑ NAMES ARE FROZEN — use each export exactly as spelled above. Never rename, recase, or restructure an existing mock (e.g. do not change mockFoo → MockFoo or const → class). Renaming breaks every other test that imports the original name.\n↑ CLASS MOCKS (Mock-prefixed exports, e.g. MockWalletService) are the canonical mock for their named service. If the source imports WalletService, import and use MockWalletService — do NOT create an inline mock. If the source calls a method not present on the class, add it to the class via REPLACE (see MOCK EDITING RULES below).`);
|
|
368
403
|
}
|
|
369
404
|
const inventory = parseMockInventory(mocksCode);
|
|
370
405
|
if (inventory.length > 0) {
|
|
@@ -375,17 +410,22 @@ export function buildGeneratePrompt(args) {
|
|
|
375
410
|
const exp = entry.exports.length > 0 ? entry.exports.join(', ') : '(no simple key exports)';
|
|
376
411
|
parts.push(` ${path} → ${exp}`);
|
|
377
412
|
}
|
|
378
|
-
parts.push('MOCK EDITING RULES — follow exactly when returning a ---MOCKS_FILE--- block:');
|
|
379
|
-
parts.push(`• A module in the inventory is ALREADY mocked. To add a new export: write ONE updated ${mockApi}.mock() block with ALL existing exports PLUS the new one. NEVER write a second ${mockApi}.mock() for the same path — the second block silently wipes every export from the first.`);
|
|
380
|
-
parts.push(`• New export const mockFoo = ${mockApi}.fn(): declare it near other exports of the same domain. Add its .mockReset() or .mockClear() to the EXISTING beforeEach — do NOT create an extra beforeEach for one variable.`);
|
|
381
|
-
parts.push(`• New module (not in inventory): append a new ${mockApi}.mock() at the END of the file, before the final beforeEach.`);
|
|
382
413
|
}
|
|
414
|
+
parts.push(`MOCK EDITING RULES — use // ---MOCKS_PATCH--- to make surgical changes (preferred over full rewrite):`);
|
|
415
|
+
parts.push(`• To add a new export (function/const) or a new ${mockApi}.mock() block: use APPEND_EXPORT + ADD_TO_BEFOREEACH for the reset.`);
|
|
416
|
+
parts.push(`• To add a method to an existing class mock (e.g. MockWalletService): use REPLACE — copy the entire class definition verbatim from the file below as the anchor, then emit the same class with the new method(s) added.`);
|
|
417
|
+
parts.push(`• To update an existing ${mockApi}.mock() block or any other section: use REPLACE with the old block as anchor, WITH the updated version.`);
|
|
418
|
+
parts.push(`• Never write a second ${mockApi}.mock() for the same path — the second block silently wipes every export from the first.`);
|
|
419
|
+
parts.push(`• If the source imports a service/hook that has NO mock here yet: add it via APPEND_EXPORT. Never leave it as an inline ${mockApi}.fn() object in the test — put it in this shared file so all tests use the same mock.`);
|
|
420
|
+
// Show the full mock file — the model needs to read exact text to write accurate
|
|
421
|
+
// REPLACE anchors in ---MOCKS_PATCH--- blocks. Truncating would make anchors impossible
|
|
422
|
+
// for anything past the cut-off. filterMockFileForSource already reduces size by keeping
|
|
423
|
+
// only vi.mock() blocks relevant to the source's imports; if nothing matched it returns
|
|
424
|
+
// the full file. Either way, show it all.
|
|
383
425
|
const relevantMocks = filterMockFileForSource(mocksCode, sourceCode);
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
parts.push('```');
|
|
388
|
-
}
|
|
426
|
+
parts.push('```');
|
|
427
|
+
parts.push(relevantMocks);
|
|
428
|
+
parts.push('```');
|
|
389
429
|
}
|
|
390
430
|
else {
|
|
391
431
|
parts.push(`\nSHARED MOCK FILE (does not exist yet) — create it if you need mocks, return it via the // ---MOCKS_FILE--- separator. Path: '${mocksImportPath}'\n⚠ Mocks file must contain ONLY ${mockApi}.fn()/${mockApi}.mock() definitions and beforeEach resets — NEVER describe/it/test/expect blocks.`);
|
|
@@ -401,9 +441,23 @@ export function buildGeneratePrompt(args) {
|
|
|
401
441
|
parts.push(`\n${buildReactNativeGuidance()}`);
|
|
402
442
|
else if (detectVue(packageDeps ?? null))
|
|
403
443
|
parts.push(`\n${buildVueGuidance()}`);
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
444
|
+
// Skeleton strategy:
|
|
445
|
+
// coverage-driven (uncoveredFunctions non-empty): collapse covered bodies, expand uncovered ones.
|
|
446
|
+
// single-file / all-uncovered (uncoveredFunctions empty):
|
|
447
|
+
// ≤ 600 lines → full source (model needs implementations to write good tests)
|
|
448
|
+
// > 600 lines → skeleton with signatures only + note to rely on USED SYMBOL DEFINITIONS
|
|
449
|
+
const FULL_SOURCE_LINE_LIMIT = 600;
|
|
450
|
+
const sourceLineCount = sourceCode.split('\n').length;
|
|
451
|
+
const skeletonized = uncoveredFunctions.length > 0
|
|
452
|
+
? shouldUseSkeleton(sourceCode)
|
|
453
|
+
: sourceLineCount > FULL_SOURCE_LINE_LIMIT;
|
|
454
|
+
const displaySource = skeletonized ? buildSourceSkeleton(sourceCode, uncoveredFunctions) : sourceCode;
|
|
455
|
+
const largeFileNote = skeletonized && uncoveredFunctions.length === 0
|
|
456
|
+
? ` (${sourceLineCount}-line file — function bodies collapsed to signatures. Use the USED SYMBOL DEFINITIONS section and existing tests to infer which functions are already covered and what the implementations do.)`
|
|
457
|
+
: skeletonized
|
|
458
|
+
? ' (large file — bodies of already-covered functions collapsed; uncovered functions shown in full)'
|
|
459
|
+
: '';
|
|
460
|
+
parts.push(`\nSOURCE FILE: ${sourceFile}${largeFileNote}`);
|
|
407
461
|
if (sourceImportPath) {
|
|
408
462
|
parts.push(`SOURCE FILE IMPORT PATH: when importing the source in your test file, use exactly: '${sourceImportPath}'`);
|
|
409
463
|
}
|
|
@@ -425,12 +479,45 @@ export function buildGeneratePrompt(args) {
|
|
|
425
479
|
if (uncoveredLines.length > 0) {
|
|
426
480
|
parts.push(`\nUNCOVERED LINES: ${uncoveredLines.slice(0, 30).join(', ')}${uncoveredLines.length > 30 ? '…' : ''}`);
|
|
427
481
|
}
|
|
428
|
-
|
|
482
|
+
const patchMode = existingTestLineCount !== undefined && existingTestLineCount > PATCH_MODE_LINE_THRESHOLD;
|
|
483
|
+
if (patchMode) {
|
|
484
|
+
parts.push(`\n⚠ PATCH MODE — this test file already has ${existingTestLineCount} lines. DO NOT rewrite the whole file. Use <code_patch> tags (NOT <code_output>) with these operations:
|
|
485
|
+
|
|
486
|
+
// @@@ ADD_AFTER_DESCRIBE: "exact describe block name"
|
|
487
|
+
it('new test name', async () => {
|
|
488
|
+
// body
|
|
489
|
+
})
|
|
490
|
+
// @@@ END
|
|
491
|
+
|
|
492
|
+
// @@@ ADD_IMPORT:
|
|
493
|
+
import { NewThing } from './path'
|
|
494
|
+
// @@@ END
|
|
495
|
+
|
|
496
|
+
// @@@ ADD_AFTER_IMPORTS:
|
|
497
|
+
vi.mock('./some/module', () => ({ default: vi.fn() }))
|
|
498
|
+
// @@@ END
|
|
499
|
+
|
|
500
|
+
// @@@ REPLACE:
|
|
501
|
+
import { render, screen } from '@testing-library/react-native'
|
|
502
|
+
// @@@ WITH:
|
|
503
|
+
import { render, screen, waitFor } from '@testing-library/react-native'
|
|
504
|
+
// @@@ END
|
|
505
|
+
|
|
506
|
+
Rules:
|
|
507
|
+
- ADD_IMPORT: appends a new import line. Use REPLACE instead when you need to add to an EXISTING import from the same module — never write a second import from the same module.
|
|
508
|
+
- ADD_AFTER_IMPORTS: for vi.mock() / module-level setup that must go AFTER all imports.
|
|
509
|
+
- REPLACE: exact old_string → new_string for any section (imports, beforeEach, helpers). Copy old text verbatim from the CURRENT TEST FILE above — character-for-character including quotes and whitespace. First occurrence only.
|
|
510
|
+
- ADD_AFTER_DESCRIBE anchor must exactly match the describe() name in the file.
|
|
511
|
+
- Do NOT output <code_output> tags in patch mode.`);
|
|
512
|
+
}
|
|
513
|
+
else {
|
|
514
|
+
parts.push('\nWrite the complete test file now.');
|
|
515
|
+
}
|
|
429
516
|
return parts.join('\n');
|
|
430
517
|
}
|
|
431
518
|
// ─── Fix prompt ───────────────────────────────────────────────────────────────
|
|
432
519
|
export function buildFixPrompt(args) {
|
|
433
|
-
const { testFile, testCode, sourceFile, sourceImportPath, errorOutput, env, mocksCode, mocksImportPath, setupFileCode, packageDeps, tsconfigPaths, typeDefinitions, localImportPaths, reactMajorVersion, projectMemory } = args;
|
|
520
|
+
const { testFile, testCode, sourceFile, sourceImportPath, errorOutput, env, mocksCode, mocksImportPath, setupFileCode, packageDeps, tsconfigPaths, typeDefinitions, localImportPaths, reactMajorVersion, projectMemory, existingTestLineCount } = args;
|
|
434
521
|
const sourceCode = args.sourceCode ? compressSource(args.sourceCode) : null;
|
|
435
522
|
const mockApi = env.testRunner === 'vitest' ? 'vi' : 'jest';
|
|
436
523
|
const parts = [];
|
|
@@ -477,7 +564,7 @@ export function buildFixPrompt(args) {
|
|
|
477
564
|
parts.push(`\nSHARED MOCK FILE (import from: '${mocksImportPath}')`);
|
|
478
565
|
if (exports.length > 0) {
|
|
479
566
|
parts.push(`Available exports: ${exports.join(', ')}`);
|
|
480
|
-
parts.push(`↑ Every name above ALREADY EXISTS in the mock file — do NOT re-declare any of them
|
|
567
|
+
parts.push(`↑ Every name above ALREADY EXISTS in the mock file — do NOT re-declare any of them. Only declare names that do NOT appear in this list.\n↑ Import every mock that matches the source file's domain. Do NOT create inline mocks for anything already in this list.\n↑ CLASS MOCKS (Mock-prefixed exports, e.g. MockWalletService) are the canonical mock for their named service. If the source imports WalletService, import and use MockWalletService — do NOT create an inline mock. If the source calls a method not present on the class, add it to the class via REPLACE (see MOCK EDITING RULES below).`);
|
|
481
568
|
}
|
|
482
569
|
const inventory = parseMockInventory(compressed);
|
|
483
570
|
if (inventory.length > 0) {
|
|
@@ -488,11 +575,13 @@ export function buildFixPrompt(args) {
|
|
|
488
575
|
const exp = entry.exports.length > 0 ? entry.exports.join(', ') : '(no simple key exports)';
|
|
489
576
|
parts.push(` Line ${String(entry.lineNumber).padStart(4)}: ${path} → ${exp}`);
|
|
490
577
|
}
|
|
491
|
-
parts.push('MOCK EDITING RULES — follow exactly when returning a ---MOCKS_FILE--- block:');
|
|
492
|
-
parts.push(`• A module in the inventory is ALREADY mocked. To add a new export: write ONE updated ${mockApi}.mock() block with ALL existing exports PLUS the new one. NEVER write a second ${mockApi}.mock() for the same path — the second block silently wipes every export from the first.`);
|
|
493
|
-
parts.push(`• New export const mockFoo = ${mockApi}.fn(): declare it near other exports of the same domain. Add its .mockReset() or .mockClear() to the EXISTING beforeEach — do NOT create an extra beforeEach for one variable.`);
|
|
494
|
-
parts.push(`• New module (not in inventory): append a new ${mockApi}.mock() at the END of the file, before the final beforeEach.`);
|
|
495
578
|
}
|
|
579
|
+
parts.push(`MOCK EDITING RULES — use // ---MOCKS_PATCH--- to make surgical changes (preferred over full rewrite):`);
|
|
580
|
+
parts.push(`• To add a new export (function/const) or a new ${mockApi}.mock() block: use APPEND_EXPORT + ADD_TO_BEFOREEACH for the reset.`);
|
|
581
|
+
parts.push(`• To add a method to an existing class mock (e.g. MockWalletService): use REPLACE — copy the entire class definition verbatim from the file below as the anchor, then emit the same class with the new method(s) added.`);
|
|
582
|
+
parts.push(`• To update an existing ${mockApi}.mock() block or any other section: use REPLACE with the old block as anchor, WITH the updated version.`);
|
|
583
|
+
parts.push(`• Never write a second ${mockApi}.mock() for the same path — the second block silently wipes every export from the first.`);
|
|
584
|
+
parts.push(`• If the source imports a service/hook that has NO mock here yet: add it via APPEND_EXPORT. Never leave it as an inline ${mockApi}.fn() object in the test — put it in this shared file so all tests use the same mock.`);
|
|
496
585
|
parts.push('```');
|
|
497
586
|
parts.push(compressed);
|
|
498
587
|
parts.push('```');
|
|
@@ -563,7 +652,52 @@ export function buildFixPrompt(args) {
|
|
|
563
652
|
parts.push('- Async code not awaited');
|
|
564
653
|
parts.push('- Component/function API changed — check the source file');
|
|
565
654
|
parts.push('- Unhandled rejection: if the error output says "Unhandled Rejection" or "Vitest caught 1 unhandled error", a mockRejectedValueOnce promise is escaping the test scope. Fix by adding await waitFor(() => expect(errorElement).toBeInTheDocument()) after the triggering action, so the rejection is fully resolved inside the test.');
|
|
566
|
-
|
|
655
|
+
const patchMode = existingTestLineCount !== undefined && existingTestLineCount > PATCH_MODE_LINE_THRESHOLD;
|
|
656
|
+
if (patchMode) {
|
|
657
|
+
parts.push(`\n⚠ PATCH MODE — this test file has ${existingTestLineCount} lines. DO NOT rewrite the whole file — the output token limit will cut it off. Instead:
|
|
658
|
+
1. Identify ONLY the failing/broken tests from the error output above.
|
|
659
|
+
2. Output a patch inside <code_patch> tags (NOT <code_output>) using this exact format:
|
|
660
|
+
|
|
661
|
+
// @@@ REPLACE_TEST: "exact it/test description string"
|
|
662
|
+
it('exact it/test description string', async () => {
|
|
663
|
+
// fixed body
|
|
664
|
+
})
|
|
665
|
+
// @@@ END
|
|
666
|
+
|
|
667
|
+
// @@@ DELETE_TEST: "exact test name to remove"
|
|
668
|
+
// @@@ END
|
|
669
|
+
|
|
670
|
+
// @@@ ADD_AFTER_DESCRIBE: "exact describe block name"
|
|
671
|
+
it('new test', async () => {
|
|
672
|
+
// body
|
|
673
|
+
})
|
|
674
|
+
// @@@ END
|
|
675
|
+
|
|
676
|
+
// @@@ ADD_IMPORT:
|
|
677
|
+
import { NewThing } from './path'
|
|
678
|
+
// @@@ END
|
|
679
|
+
|
|
680
|
+
// @@@ ADD_AFTER_IMPORTS:
|
|
681
|
+
vi.mock('./some/module', () => ({ default: vi.fn() }))
|
|
682
|
+
// @@@ END
|
|
683
|
+
|
|
684
|
+
// @@@ REPLACE:
|
|
685
|
+
import { render, screen } from '@testing-library/react-native'
|
|
686
|
+
// @@@ WITH:
|
|
687
|
+
import { render, screen, waitFor } from '@testing-library/react-native'
|
|
688
|
+
// @@@ END
|
|
689
|
+
|
|
690
|
+
Rules:
|
|
691
|
+
- REPLACE_TEST / DELETE_TEST / ADD_AFTER_DESCRIBE anchors must exactly match what appears in the test file — copy verbatim, same quotes.
|
|
692
|
+
- REPLACE: use for any section that isn't an entire it/test block — imports, beforeEach, helpers. Copy old text verbatim from the CURRENT TEST FILE. Use instead of ADD_IMPORT when adding to an existing import from the same module.
|
|
693
|
+
- Only include operations for what actually needs to change. Do not restate passing tests.
|
|
694
|
+
- ADD_IMPORT: appends a new import line — only for modules not yet imported at all.
|
|
695
|
+
- ADD_AFTER_IMPORTS: for vi.mock() / module-level setup that must go AFTER all imports.
|
|
696
|
+
- Do NOT output <code_output> tags in patch mode. Use <code_patch> only.`);
|
|
697
|
+
}
|
|
698
|
+
else {
|
|
699
|
+
parts.push('\nReturn your response in the required <thinking> + <code_output> format.');
|
|
700
|
+
}
|
|
567
701
|
return parts.join('\n');
|
|
568
702
|
}
|
|
569
703
|
// ─── Pollution fix prompt ─────────────────────────────────────────────────────
|
|
@@ -608,7 +742,7 @@ export function buildPollutionFixPrompt(args) {
|
|
|
608
742
|
parts.push('Return the complete modified polluting file in the required <thinking> + <code_output> format.');
|
|
609
743
|
return parts.join('\n');
|
|
610
744
|
}
|
|
611
|
-
export function buildRetryPrompt(failureOutput, failedAttempts = []) {
|
|
745
|
+
export function buildRetryPrompt(failureOutput, failedAttempts = [], patchMode = false, reactish = true) {
|
|
612
746
|
const parts = [];
|
|
613
747
|
if (failedAttempts.length > 0) {
|
|
614
748
|
parts.push(`You have already attempted to fix this ${failedAttempts.length} time(s). Do NOT repeat these failed approaches:`);
|
|
@@ -628,7 +762,10 @@ export function buildRetryPrompt(failureOutput, failedAttempts = []) {
|
|
|
628
762
|
}
|
|
629
763
|
parts.push('');
|
|
630
764
|
}
|
|
631
|
-
|
|
765
|
+
// Neutral header: this prompt is reused for assertion failures, type-only repairs (where
|
|
766
|
+
// the tests actually PASS), patch-anchor failures, and "no tests" cases. Hardcoding "the
|
|
767
|
+
// tests failed" contradicts the error text in several of those. Let the output speak.
|
|
768
|
+
parts.push(`The previous attempt did not pass. Output from the last run:`);
|
|
632
769
|
parts.push('```');
|
|
633
770
|
parts.push(failureOutput.slice(0, 3000));
|
|
634
771
|
parts.push('```');
|
|
@@ -658,11 +795,19 @@ export function buildRetryPrompt(failureOutput, failedAttempts = []) {
|
|
|
658
795
|
parts.push('- Barrel file mock miss: if a module is re-exported from a barrel/index file, mocking the barrel will NOT intercept imports of the direct file. Mock the specific file the source actually imports. If unsure, mock both.');
|
|
659
796
|
parts.push('- Wrong API — use only methods that exist in the installed version of the library');
|
|
660
797
|
parts.push('- Type error — make sure the types match what the source file exports');
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
798
|
+
// React/RTL-specific causes — only relevant to component tests. Omitted for backend/library
|
|
799
|
+
// projects (e.g. a service interactor) where they are pure noise on every retry.
|
|
800
|
+
if (reactish) {
|
|
801
|
+
parts.push('- React 18 act() async: every act(async () => ...) MUST be awaited. Unawaited act() calls cause state to leak across tests, producing "Cannot read properties of null" or timeout failures in unrelated tests. Fix: add await before every act() call that wraps async code.');
|
|
802
|
+
parts.push('- Loading state — if the error is "Unable to find element" on a Submit/Save button, the component likely unmounts the button during loading rather than disabling it. Assert on the spinner or loading indicator instead.');
|
|
803
|
+
parts.push('- Unhandled rejection ("Vitest caught 1 unhandled error" / "Unhandled Rejection"): a mockRejectedValueOnce promise is escaping the test scope. After the action that triggers the rejection, add: await waitFor(() => expect(screen.getByText(/error/i)).toBeInTheDocument()) — this keeps the rejection chained inside the test so Vitest doesn\'t treat it as unhandled. The component may already catch the error internally, but the test still needs to await the resulting state change.');
|
|
804
|
+
}
|
|
664
805
|
parts.push('');
|
|
665
|
-
|
|
806
|
+
// Preserve the response mode the file is in. For a large (patch-mode) file, forcing a full
|
|
807
|
+
// <code_output> rewrite risks truncation mid-file — keep it on <code_patch>.
|
|
808
|
+
parts.push(patchMode
|
|
809
|
+
? 'Fix the issue using <code_patch> tags with the patch operations from the original prompt — do NOT rewrite the whole file, and do NOT use <code_output>.'
|
|
810
|
+
: 'Fix the issue and return your response in the required <thinking> + <code_output> format.');
|
|
666
811
|
return parts.join('\n');
|
|
667
812
|
}
|
|
668
813
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/prompts/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/prompts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-native.d.ts","sourceRoot":"","sources":["../../../src/agent/prompts/react-native.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAIrE;AAED,wBAAgB,wBAAwB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"react-native.d.ts","sourceRoot":"","sources":["../../../src/agent/prompts/react-native.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAIrE;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAmFjD;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiGnE"}
|
|
@@ -12,19 +12,25 @@ export function buildReactNativeGuidance() {
|
|
|
12
12
|
'- MOCK SHAPE MUST MATCH HOOK DESTRUCTURE EXACTLY: grep the component for `const { ... } = useHookName()` and copy every destructured key into the mock return value. Missing keys are silently `undefined` and cause crashes or broken UI (e.g. a missing numeric threshold makes validation always false, a missing string inserts "undefined" into rendered text). Wrong keys (extra properties the component never reads) are harmless but missing ones are always bugs. Every mock must include a sensible default for every key the component destructures.',
|
|
13
13
|
'- SERVICE METHOD NAMES: grep the component for `ServiceName.method(` and copy the exact method name verbatim — a single-letter difference (`getDrawResult` vs `getDrawResults`, `swapBerries` vs `redeemBerries`) silently attaches the mock to a nonexistent property, leaving the real method un-mocked. Never infer method names from intent; always read the call site.',
|
|
14
14
|
'- MOCK DATA COMPLETENESS: mock object factory helpers must include every field the component accesses — especially arrays. If the component does `item.my_tickets.length`, `.map(...)`, or `.some(...)`, a mock missing `my_tickets` throws `TypeError: Cannot read properties of undefined`. Scan the component for every property access on each mock object and include them all with safe defaults (`[]`, `0`, `false`, `\'\'`).',
|
|
15
|
+
'- MOCK ALL SERVICE METHODS IN beforeEach: grep the component for every method called on each mocked service — not just the methods a particular test exercises. The component may reach other methods via useEffect on mount or via user interaction in other branches. Every method must have a mockResolvedValue (or mockReturnValue for sync) in beforeEach. A missing method returns undefined, and `undefined.then(...)` in a useEffect crashes ALL tests silently.',
|
|
16
|
+
'- MODULE-LEVEL HOOK MOCK MUST BE jest.fn(): when a hook is mocked at module level with `jest.mock(\'../useHook\', () => ({ useHook: ... }))`, the returned value must be `jest.fn()` — not a plain object. A plain object has no `.mockImplementation` / `.mockReturnValue` methods, so tests that try to override the mock per-test will throw "is not a function". Always:\n jest.mock(\'../useHook\', () => ({ useHook: jest.fn() }))\n beforeEach(() => { (useHook as jest.Mock).mockReturnValue({ loading: false, ... }) })',
|
|
17
|
+
'- FACTORY FUNCTIONS FOR DEFAULT MOCK CONTEXTS: any default mock return value that contains jest.fn() must be defined as a factory function, NOT a plain object:\n // WRONG — jest.fn() instances created once; jest.clearAllMocks() clears them, all tests share stale refs\n const defaultCtx = { signIn: jest.fn(), showToast: jest.fn() };\n // RIGHT — fresh jest.fn() instances per test\n const defaultCtx = () => ({ signIn: jest.fn(), showToast: jest.fn() });\n beforeEach(() => { (useApp as jest.Mock).mockReturnValue(defaultCtx()); })\n This matters because jest.clearAllMocks() (in afterEach) strips implementations from every jest.fn() — if tests share module-level instances, subsequent tests see undefined returns.',
|
|
18
|
+
'- UNIQUE MOCK LIST DATA: when generating arrays of mock objects, use unique values for every field the test will query on. A factory stamping the same `description: \'Survey reward\'` onto 3 transactions causes `getByText(\'Survey reward\')` to throw "Found multiple elements". Use:\n [mockTx({ description: \'Survey reward\' }), mockTx({ description: \'Referral bonus\' })]',
|
|
15
19
|
"- Import render, screen, fireEvent, waitFor from '@testing-library/react-native'",
|
|
16
20
|
'- No document, window, or localStorage globals — they do not exist in React Native',
|
|
17
21
|
"- Mock react-native modules with jest.mock('react-native', ...)",
|
|
18
22
|
'- Use fireEvent.press() not fireEvent.click() for Pressable/TouchableOpacity',
|
|
19
|
-
"- Async state: use waitFor() from '@testing-library/react-native'
|
|
23
|
+
"- Async state / act() warnings: ALWAYS use waitFor() from '@testing-library/react-native' (not '@testing-library/react') when asserting on state that changes after an async service call. waitFor() wraps polling in act() automatically and handles multi-hop promise chains. Do NOT use `await act(async () => { ... })` as a substitute — it only flushes one microtask level and misses state updates from mockResolvedValue chains. Exact pattern:\n await fireEvent.press(submitButton)\n await waitFor(() => expect(screen.getByText('Success')).toBeTruthy())\n If you see the console.error 'An update to X inside a test was not wrapped in act(...)' it means this waitFor() is missing after an event that triggers async setState.",
|
|
20
24
|
'- ALL mock functions must use jest.fn() — do NOT mix vi.fn() and jest.fn() in the same project',
|
|
21
25
|
"- Mock component props: use ViewProps from react-native (NOT Record<string, unknown>) when spreading props into a <View> mock. Record<string, unknown> conflicts with View's ref: React.Ref<View> and causes ts(2352). Pattern:\n import { View, type ViewProps } from 'react-native'\n const MockFoo = (props: ViewProps) => <View testID=\"foo\" {...props} />",
|
|
22
26
|
'- "render function has not been called": TWO causes — (1) forgot to await render() — RNTL v14 render() is async, should be awaited in async tests; or (2) component threw during render (missing mock, undefined import). Check both before diagnosing screen queries.',
|
|
23
27
|
'- RNTL v14 — render() IS ASYNC: test should be async and render should typically be awaited: `await render(<Screen />)`. Without awaiting async updates, act() may not flush and screen queries can fail with "render function has not been called".',
|
|
24
28
|
'- useEffect MICROTASK FLUSH: `await render()` flushes all pending microtasks via act(), so any state set by a useEffect that calls mockResolvedValue (e.g. fetching data on mount) is already committed before the first assertion runs. You do NOT need an extra waitFor after render for mount-time data fetches — the state is already there. Use waitFor only when testing flows that trigger further async state changes after user interaction.',
|
|
25
|
-
'- RNTL v14 — fireEvent SHOULD BE AWAITED: prefer `await fireEvent.press(...)` and `await fireEvent.changeText(...)` so updates flush before assertions. Missing await
|
|
29
|
+
'- RNTL v14 — fireEvent SHOULD BE AWAITED: prefer `await fireEvent.press(...)` and `await fireEvent.changeText(...)` so updates flush before assertions. Missing await is the hardest bug to diagnose — the handler fires with stale state (e.g. redeemValid=false) and returns early silently. The tree dump is misleading: by the time it prints, async state has settled so it shows the correct value even though the handler already ran with the wrong one.',
|
|
26
30
|
'- LOADING STATE — controlled Promise pattern: do NOT await the press when testing loading UI. Instead: (1) const pressPromise = fireEvent.press(btn); (2) await waitFor(() => expect(screen.getByTestId("activity-indicator")).toBeTruthy()); (3) resolve mock; (4) await pressPromise. Skipping step 4 leaves open act() scope that corrupts subsequent tests.',
|
|
31
|
+
'- ACT IMPORT RULE: NEVER import or call `act` from `@testing-library/react-native` directly. RNTL registers an afterEach that calls cleanup() using its own internal act — if your test code also calls RNTL\'s exported `act`, the scopes overlap and corrupt RNTL\'s internal `screen` state, making ALL subsequent screen.* queries in the file throw "render function has not been called". Use `waitFor` from RNTL for async assertions. If you need to flush Promises at the top level of a test outside of waitFor, use:\n import { act } from \'react\' // safe — base implementation, no RNTL scope conflict\n await act(async () => {}) // flushes pending microtasks/state updates',
|
|
27
32
|
// ICON/COMPONENT MOCKS
|
|
33
|
+
'- ICON LIBRARY MOCKS — GREP EVERY IMPORT: before writing a mock for any icon library (lucide-react-native, @expo/vector-icons, react-native-vector-icons, etc.), grep the COMPONENT FILE for every icon name imported from that library and add each one to the mock. Missing even one causes "Element type is invalid: expected a string or class/function but got: undefined" at render. Pattern:\n jest.mock(\'lucide-react-native\', () => ({\n User: () => null,\n Mail: () => null, // ← was missing — add every icon the component imports\n ChevronRight: () => null,\n }))',
|
|
28
34
|
'- ICON/COMPONENT MOCKS (Stateless): For simple stubs where you do NOT assert call counts, use plain functions `() => null`. Never use jest.fn(() => null) because clearAllMocks() strips implementations, causing "Nothing was returned from render".',
|
|
29
35
|
`- COMPOUND COMPONENT MOCKS (e.g. expo-router Tabs): Mock them using a static factory:\n jest.mock('expo-router', () => {\n const MockComponent = ({ children }) => children;\n MockComponent.Screen = () => null;\n return {\n Tabs: MockComponent,\n Link: () => null,\n useRouter: () => ({\n push: jest.fn(),\n replace: jest.fn(),\n back: jest.fn(),\n }),\n };\n });`,
|
|
30
36
|
// CRUCIAL NATIVE INFRASTRUCTURE MOCKS
|
|
@@ -43,6 +49,8 @@ export function buildReactNativeGuidance() {
|
|
|
43
49
|
'- TOAST VS SCREEN TEXT — check the catch/success block before asserting screen text: if the component calls `showToast(message, ...)` in a catch block, nothing is rendered on screen — assert `expect(showToast).toHaveBeenCalledWith(\'Exact message\', ...)` instead. For error flows use `mockRejectedValue(new Error(\'...\'))`, not `mockResolvedValue({ success: false })`. For success flows that only call `showToast` and clear state (no success screen rendered), also assert on `showToast`. Never write `screen.getByText(\'...\')` for text that goes to a toast service.',
|
|
44
50
|
"- BUTTON QUERIES: getAllByRole('button') does NOT reliably match TouchableOpacity. Prefer getAllByText('Label') or testID.",
|
|
45
51
|
'- ICON-ONLY BUTTONS: if a TouchableOpacity contains only an icon component (mocked as `() => null`) with no text, testID, or accessibilityLabel, it cannot be queried in RNTL v14. Do not invent a text label that is not in the JSX. Options: (1) skip that test with a comment explaining why; (2) add a `testID` to the component. Never use `UNSAFE_getAllByType` — removed in RNTL v14.',
|
|
52
|
+
'- FRAGMENT-WRAPPED BUTTON TEXT: when a TouchableOpacity\'s text is wrapped in a Fragment (`<>{...}</>`) or a conditional branch, `getByText(\'Label\')` returns the inner `<Text>` node. RNTL\'s fiber traversal upward to find `onPress` can fail at the Fragment boundary — `fireEvent.press` silently does nothing. Fix: add `testID` to the outer `TouchableOpacity` or `Pressable` and press by ID:\n // Component: <TouchableOpacity testID="submit-btn" onPress={handleSubmit}>\n await fireEvent.press(screen.getByTestId(\'submit-btn\'))\n `Pressable` handles this more reliably than `TouchableOpacity` for the same reason.',
|
|
53
|
+
'- MODAL CONTENT IN TEST ENV: React Native\'s `<Modal>` mock may render its children even when `visible={false}`. This puts hidden modal content into the query tree. A regex like `/Withdraw/i` may match both the "Withdraw" button AND "Berries to Withdraw" inside a closed modal. Prefer exact string matching for short/common words:\n screen.getByText(\'Withdraw\') // exact — safe\n screen.getByText(/Withdraw/i) // regex — may multi-match\n Also: after pressing a button that calls setState to open a Modal, the re-render is async — wrap post-press Modal assertions in waitFor:\n await fireEvent.press(screen.getByText(\'Open\'))\n await waitFor(() => expect(screen.getByText(\'Modal Title\')).toBeTruthy())',
|
|
46
54
|
"- DISABLED TouchableOpacity: fireEvent.press is blocked automatically when disabled={true}",
|
|
47
55
|
"- TEST CASCADE: one failing test can corrupt all later tests due to open act() scope or render crash. Always fix FIRST failure first.",
|
|
48
56
|
].join('\n');
|
|
@@ -50,7 +58,7 @@ export function buildReactNativeGuidance() {
|
|
|
50
58
|
export function detectRntlErrors(errorOutput) {
|
|
51
59
|
const lines = [];
|
|
52
60
|
if (/Element type is invalid/i.test(errorOutput) || /expected a string.*but got.*undefined/i.test(errorOutput)) {
|
|
53
|
-
lines.push('CRITICAL:
|
|
61
|
+
lines.push('CRITICAL: A component resolved to undefined — most likely an icon not in the mock.', 'Check in this order:', '1. ICON LIBRARY MOCK INCOMPLETE: grep the component for every icon imported from lucide-react-native / @expo/vector-icons / react-native-vector-icons. Add every missing icon to the mock. A single missing icon causes this error at render.', '2. Named vs default import mismatch in another mock.', '3. Missing exports in a barrel file mock.', '4. Mock factory not returning the required key.', 'Fix: grep the component file for all imports from the failing module and ensure each one appears in the mock.');
|
|
54
62
|
}
|
|
55
63
|
if (/Failed to create a worklet/i.test(errorOutput) || /useSharedValue/i.test(errorOutput) || /Reanimated/i.test(errorOutput)) {
|
|
56
64
|
lines.push('Reanimated not configured for Jest.', "Fix: jest.mock('react-native-reanimated', () => require('react-native-reanimated/mock'));");
|
|
@@ -71,8 +79,11 @@ export function detectRntlErrors(errorOutput) {
|
|
|
71
79
|
(/invariant violation/i.test(errorOutput) && /navigation/i.test(errorOutput))) {
|
|
72
80
|
lines.push('React Navigation missing mock.', "Fix: jest.mock('@react-navigation/native', () => ({ useNavigation: () => ({ navigate: jest.fn(), goBack: jest.fn() }) }));");
|
|
73
81
|
}
|
|
82
|
+
if (/not wrapped in act\b/i.test(errorOutput) || /An update to .+ inside a test was not wrapped in act/i.test(errorOutput)) {
|
|
83
|
+
lines.push('ACT() WARNING: An async state update (setX / setState) fired after the test finished flushing.', 'Root cause: an event handler awaits a service call (mockResolvedValue), then calls setState.', 'The test fired the event but did not wait for those async state changes to settle before asserting.', 'REQUIRED FIX — use waitFor() after the triggering event:', ' await fireEvent.press(submitButton) // or fireEvent.changeText, etc.', ' await waitFor(() => {', ' expect(screen.getByText("Success")).toBeTruthy() // assert on state AFTER the async work', ' })', 'waitFor() polls the assertion inside act() automatically and drains all microtask hops.', 'Do NOT try to fix this with `await act(async () => { ... })` — act() only flushes one', 'microtask level and will miss state updates from multi-hop mockResolvedValue chains.', 'Import waitFor from your project\'s testing library (@testing-library/react-native or @testing-library/react).');
|
|
84
|
+
}
|
|
74
85
|
if (/render function has not been called/i.test(errorOutput)) {
|
|
75
|
-
lines.push('Render did not complete
|
|
86
|
+
lines.push('Render did not complete — three possible causes:', '(1) render() not awaited — in RNTL v14 render() is async, must be awaited.', '(2) Component threw during render — check for missing mocks or undefined imports.', '(3) `act` imported from @testing-library/react-native — this overlaps with RNTL\'s', ' internal cleanup act and corrupts screen state for ALL queries in the file.', ' Fix: remove that import. Use `waitFor` for assertions; use `import { act } from \'react\'`', ' only if you need top-level promise flushing outside of waitFor.');
|
|
76
87
|
}
|
|
77
88
|
if (/Nothing was returned from render/i.test(errorOutput)) {
|
|
78
89
|
lines.push('A component mock returned undefined.', 'Fix: replace jest.fn(() => null) with () => null for stateless mocks.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-native.js","sourceRoot":"","sources":["../../../src/agent/prompts/react-native.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,WAA0B;IAC1D,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAA;IAC9B,iFAAiF;IACjF,OAAO,0DAA0D,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AACvH,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,uFAAuF;QACvF,4aAA4a;QAC5a,6oBAA6oB;QAE7oB,kiBAAkiB;QAEliB,6WAA6W;QAE7W,saAAsa;
|
|
1
|
+
{"version":3,"file":"react-native.js","sourceRoot":"","sources":["../../../src/agent/prompts/react-native.ts"],"names":[],"mappings":"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"}
|