45 full abstraction around faker to prevent need to dynamically delegate#120
Conversation
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (11)
📝 Walkthrough<review_stack_artifact> </review_stack_artifact> ✨ Finishing Touches🧪 Generate unit tests (beta)
|
There was a problem hiding this comment.
Pull request overview
This PR introduces a full domain-keyword abstraction over Faker (closes #45) so that faker invocation no longer relies on dynamic delegation at call sites, and lays groundwork for upgrading Faker without breaking the user-facing rule syntax. It adds a new domain-keywords module with canonical awd.domain.* keywords, an alias index (with collision-aware shortening), an arg-validation/execution layer, and broad per-module Jest coverage. It also refreshes README documentation for the new keyword form and updates the Faker link, and is associated with #118 (UI schema comments).
Changes:
- New domain keyword catalog/alias/execution layer abstracting Faker (
packages/core/js/domain/domain-keywords.jsand related metadata). - Extensive new Jest unit tests per faker module (airline, animal, color, commerce, system, string, vehicle, word, etc.) exercising
executeDomainKeywordand alias resolution. - README rewritten to describe the new
awd.domain.*/domain.*rule syntax and updated Faker.js links.
Reviewed changes
Copilot reviewed 106 out of 107 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| README.md | Documents new domain keyword syntax and updates Faker.js library link. |
| packages/core/src/tests/data_generation/unit/domain/domainKeywords.test.js | Core catalog, alias index, delegation, and arg-validation tests. |
| packages/core/src/tests/data_generation/unit/domain/domain-word-exec.test.js | Smoke-executes word.* domain keywords through the abstraction. |
| packages/core/src/tests/data_generation/unit/domain/domain-vehicle-exec.test.js | Smoke-executes vehicle.* domain keywords. |
| packages/core/src/tests/data_generation/unit/domain/domain-system-exec.test.js | Smoke-executes system.* keywords incl. extension/year args. |
| packages/core/src/tests/data_generation/unit/domain/domain-string-exec.test.js | Smoke-executes string.* keywords incl. length param checks. |
| packages/core/src/tests/data_generation/unit/domain/domain-science-exec.test.js | Smoke-executes science.* domain keywords (diff truncated). |
Comments suppressed due to low confidence (1)
README.md:106
- Missing space between "The" and the inline code:
Theawdanddomainprefixes are optional:renders incorrectly. Should beTheawdanddomainprefixes are optional:.
The`awd` and `domain` prefixes are optional:
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 05eb9a3a7a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Actionable comments posted: 4
Note
Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
packages/core-ui/js/gui_components/testdatadefn.js (1)
847-850:⚠️ Potential issue | 🟠 Major | ⚡ Quick winAG Grid type editor is missing domain commands.
Domain support is wired for Tabulator, but AG Grid still gets
FAKER_COMMANDSonly, so users on AG Grid cannot select domain commands from the type editor.Suggested fix
function setupAgGridDefnEditor(tableDiv) { const defnRowData = []; + const domainTypeValues = getVisibleDomainTypeOptions('').map((entry) => entry.value); const defnColumnDefs = [ { field: 'columnName' }, { field: 'type', cellEditor: SelectFilterEditor, - cellEditorParams: { values: FAKER_COMMANDS }, + cellEditorParams: { values: [...FAKER_COMMANDS, ...domainTypeValues] }, }, { field: 'value' }, ];Also applies to: 699-712
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/core-ui/js/gui_components/testdatadefn.js` around lines 847 - 850, The AG Grid column definition for the 'type' field uses SelectFilterEditor with only FAKER_COMMANDS, so domain commands are missing; update the cellEditorParams for the SelectFilterEditor in the 'type' column (and the other identical block around the other occurrence) to include the domain command list as well—merge FAKER_COMMANDS with the domain commands constant (e.g., DOMAIN_COMMANDS or the shared COMMANDS array used for Tabulator) so the values passed to cellEditorParams are the combined list of faker + domain commands.packages/core-ui/src/tests/generator/data-generator-page.test.js (1)
96-1437:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winJest unit tests passed; browser tests require execution in proper environment.
Unit tests for
packages/core-ui/src/testsandapps/web/src/tests/jestran successfully (355 + 12 tests passed). The specific test filedata-generator-page.test.jspassed all 47 tests. Browser tests (pnpm run test:browser) require a proper webserver environment to complete. Please run this command locally or in CI before merging.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/core-ui/src/tests/generator/data-generator-page.test.js` around lines 96 - 1437, Unit tests for packages/core-ui (including data-generator-page.test.js) passed but browser tests were not executed; add/enable running the browser test suite (pnpm run test:browser) in CI or local pre-merge steps so the browser-only tests run in a proper webserver environment. Update the CI workflow (or package.json scripts/README) to start the required webserver and run the test:browser script, ensuring the DataGeneratorPage browser scenarios in data-generator-page.test.js are executed; if CI cannot support browser tests, add a clear gating note in the PR/merge checklist indicating that pnpm run test:browser must be run locally before merge.
🟡 Minor comments (17)
README.md-106-106 (1)
106-106:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix spacing in Markdown formatting.
Missing space before the opening backtick.
✏️ Proposed fix
-The`awd` and `domain` prefixes are optional: +The `awd` and `domain` prefixes are optional:🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@README.md` at line 106, The sentence "The`awd` and `domain` prefixes are optional:" has a missing space before the opening backtick; update that Markdown to "The `awd` and `domain` prefixes are optional:" by inserting a space before the first backtick so formatting and spacing are correct in README.md (look for the literal text "The`awd` and `domain` prefixes are optional:" to locate the line).docs-src/docs/040-test-data/domain/020-airline.md-209-210 (1)
209-210:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winComplete truncated method descriptions.
The summary text for
airline.flightNumberandairline.recordLocatorends mid-sentence, which makes these entries read as incomplete generated artifacts. Please finish both descriptions for readability and consistency.Also applies to: 228-229
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/020-airline.md` around lines 209 - 210, The doc entries for airline.flightNumber and airline.recordLocator are truncated mid-sentence; update the descriptive text for both symbols so each is a complete sentence (e.g., for airline.flightNumber finish with “...Sometimes they are prefixed by a carrier code or include leading zeros to reach up to 4 digits.” and for airline.recordLocator finish with “...used as a short alphanumeric booking reference typically 6 characters long, composed of uppercase letters and digits.”) ensuring the summaries are clear, complete sentences and consistent with surrounding documentation.docs-src/docs/040-test-data/domain/070-company.md-114-115 (1)
114-115:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix repeated punctuation in method descriptions.
These three sections end with
end user..(double period). Please change to a single period for consistency.Also applies to: 133-134, 152-153
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/070-company.md` around lines 114 - 115, Several method description strings end with the duplicated punctuation "end user.."—replace the double period with a single period in each occurrence. Locate the three descriptions containing the exact substring "end user.." and update them to "end user." so the sentences read with a single trailing period; ensure you update all occurrences (the ones matching that exact phrase) in this markdown so punctuation is consistent.docs-src/docs/040-test-data/domain/050-color.md-196-197 (1)
196-197:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix incomplete
color.lchdescription sentence.The method description is cut off mid-thought. Please complete or remove the trailing clause so the reference remains unambiguous.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/050-color.md` around lines 196 - 197, The docstring for the color.lch description is cut off mid-sentence; open the documentation for the color.lch method and either complete the truncated clause so the description reads as a full, unambiguous sentence (e.g., explain the LCH color range and what the "upper bound" refers to) or remove the dangling fragment entirely so the reference is clear—update the text around the "Returns an LCH color. Even though upper bound of" fragment to a complete sentence referencing color.lch.docs-src/docs/040-test-data/domain/060-commerce.md-45-46 (1)
45-46:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winReplace placeholder/awkward parameter descriptions for
commerce.isbn.
separatorcurrently says “No description provided.” andvariantreads awkwardly. Please provide a concrete description forseparatorand tighten thevariantsentence so users can understand valid input quickly.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/060-commerce.md` around lines 45 - 46, Update the commerce.isbn parameter descriptions: replace the placeholder for `separator` with a concrete explanation that it is a string inserted between ISBN digit groups (e.g., "-" or " ") or an empty string for no separator and note the default behavior; tighten `variant` to state clearly that it accepts only "10" or "13" (string) to return a 10‑digit or 13‑digit ISBN respectively and indicate the default value if any. Locate the `commerce.isbn` parameter table entries for `separator` and `variant` and replace the existing lines accordingly.docs-src/docs/040-test-data/domain/160-internet.md-121-121 (1)
121-121:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winEscape pipe characters in the table cell to prevent broken rendering.
Line 121 contains raw
|characters in the description, so markdown parses extra columns and breaks the table.Suggested fix
-| `allowSpecialCharacters` | `boolean` | no | Whether special characters such as .!#$%&'*+-/=?^_`&`#123`;|&`#125`;~ should be included in the email address. | +| `allowSpecialCharacters` | `boolean` | no | Whether special characters such as .!#$%&'*+-/=?^_`&`#123`;\|&`#125`;~ should be included in the email address. |🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/160-internet.md` at line 121, The table cell for the allowSpecialCharacters property contains raw pipe characters which break Markdown table parsing; update the description for `allowSpecialCharacters` by escaping each `|` (e.g., replace `|` with `\|` or use HTML entity `&`#124`;`) or wrap the entire description in a code span so the pipes are treated as literal characters and the table renders correctly.docs-src/docs/040-test-data/domain/240-science.md-33-34 (1)
33-34:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUse plain JSON syntax instead of HTML entities.
The example return values use HTML entities (
{for{and}for}). Plain JSON syntax improves readability and maintains consistency with standard documentation practices.📝 Proposed fix
Example return values: -- `&`#123`;"symbol":"N","name":"Nitrogen","atomicNumber":7&`#125`;` -- `&`#123`;"symbol":"Sn","name":"Tin","atomicNumber":50&`#125`;` +- `{"symbol":"N","name":"Nitrogen","atomicNumber":7}` +- `{"symbol":"Sn","name":"Tin","atomicNumber":50}`And:
Example return values: -- `&`#123`;"name":"sievert","symbol":"Sv"&`#125`;` -- `&`#123`;"name":"pascal","symbol":"Pa"&`#125`;` +- `{"name":"sievert","symbol":"Sv"}` +- `{"name":"pascal","symbol":"Pa"}`Also applies to: 109-110
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/240-science.md` around lines 33 - 34, Replace the HTML-entity encoded braces in the example JSON snippets with plain JSON syntax: change occurrences like `&`#123`;"symbol":"N","name":"Nitrogen","atomicNumber":7&`#125`;` and `&`#123`;"symbol":"Sn","name":"Tin","atomicNumber":50&`#125`;` to use standard curly braces (e.g., {"symbol":"N",...}) so the examples are valid, readable JSON; make the same replacements for the other occurrences referenced (the similar examples at lines 109-110).docs-src/docs/040-test-data/domain/170-literal.md-9-9 (1)
9-9:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winClarify that
literaldoes not use faker.The description states the domain "maps domain keywords to underlying faker implementations," but the
literaldomain returns user-provided values without invoking faker. This is misleading.📝 Proposed fix
-The `literal` domain maps domain keywords to underlying faker implementations. +The `literal` domain returns literal values provided by the caller without using faker.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/170-literal.md` at line 9, Update the documentation sentence that currently says "The `literal` domain maps domain keywords to underlying faker implementations" to explicitly state that the `literal` domain does NOT invoke faker and simply returns user-provided values; locate the `literal` domain docs and replace or augment that phrase so it reads something like "`literal` returns user-specified values directly and does not call faker" to avoid the misleading implication that it uses faker.docs-src/docs/040-test-data/domain/180-location.md-191-192 (1)
191-192:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUse plain JSON syntax instead of HTML entities.
The example return values use HTML entities (
{for{and}for}). Plain JSON syntax is more readable and consistent with standard documentation practices.📝 Proposed fix
Example return values: -- `&`#123`;"name":"Tagalog","alpha2":"tl","alpha3":"tgl"&`#125`;` -- `&`#123`;"name":"Azerbaijani","alpha2":"az","alpha3":"aze"&`#125`;` +- `{"name":"Tagalog","alpha2":"tl","alpha3":"tgl"}` +- `{"name":"Azerbaijani","alpha2":"az","alpha3":"aze"}`🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/180-location.md` around lines 191 - 192, Replace the HTML-entity-encoded JSON examples with plain JSON braces: update the two return-value lines that currently contain `&`#123`;"name":"Tagalog","alpha2":"tl","alpha3":"tgl"&`#125`;` and `&`#123`;"name":"Azerbaijani","alpha2":"az","alpha3":"aze"&`#125`;` to use normal JSON syntax like {"name":"Tagalog","alpha2":"tl","alpha3":"tgl"} and {"name":"Azerbaijani","alpha2":"az","alpha3":"aze"} so the examples are readable and consistent.docs-src/docs/040-test-data/domain/190-lorem.md-24-31 (1)
24-31:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAdd parameter descriptions for
lorem.lines.The parameters
min,max, andlineCounthave placeholder descriptions ("No description provided.") whilelineCountMaxandlineCountMinhave meaningful descriptions. Update these three parameters to match the clarity of the others.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/190-lorem.md` around lines 24 - 31, Update the parameter descriptions for lorem.lines: replace the placeholders for `min`, `max`, and `lineCount` with clear descriptions similar to `lineCountMin`/`lineCountMax`—e.g., `min` should describe the minimum number of words (or characters) per generated line, `max` should describe the maximum number of words (or characters) per generated line, and `lineCount` should describe a fixed number of lines to generate (overriding min/max when provided); update the table entries for `min`, `max`, and `lineCount` in the `lorem.lines` docs to these clearer descriptions so they match the clarity of `lineCountMin` and `lineCountMax`.docs-src/docs/040-test-data/domain/210-number.md-24-27 (1)
24-27:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winExpand parameter type for
number.bigIntto include all supported types.The
valueparameter should acceptbigint|number|string|booleanat minimum. The faker.js documentation shows thatfaker.number.bigInt()accepts these four primitive types, plus an optional options object withmin,max, andmultipleOfproperties. Update the type definition inpackages/core/js/domain/domain-keyword-definitions.jsto accurately reflect the full set of accepted parameter types.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/210-number.md` around lines 24 - 27, Update the `number.bigInt` parameter typing in the domain keyword definitions so the `value` arg accepts all supported primitives and the optional options object: change the `value` type in packages/core/js/domain/domain-keyword-definitions.js (the `number.bigInt` entry) from `string|number|boolean` to `bigint|number|string|boolean` (or a union that also allows an options object with `{ min?: bigint|number|string, max?: bigint|number|string, multipleOf?: bigint|number|string }`), and ensure any description mentions the optional options object with min, max and multipleOf so the definition matches faker.js behavior.docs-src/docs/040-test-data/domain/260-system.md-89-89 (1)
89-89:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winClarify grammar in
includeNonStandarddescription.“etc text labels” should be “etc. text labels” (or “etc., text labels”) for correct punctuation and readability.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/260-system.md` at line 89, Update the description for the includeNonStandard field to use correct punctuation for "etc" so it reads either "etc. text labels" or "etc., text labels"; locate the table row describing `includeNonStandard` and change "etc text labels" to the punctuated form (e.g., "Whether to include a `@yearly`, `@monthly`, `@daily`, etc. text labels in the generated expression.").docs-src/docs/040-test-data/domain/250-string.md-110-110 (1)
110-110:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix broken Markdown table cell parsing for union type.
The
Typecell uses an unescaped pipe (string|array), which splits the row into extra columns and breaks table rendering.Proposed fix
-| `characters` | `string|array` | yes | No description provided. | +| `characters` | `string\|array` | yes | No description provided. |🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/250-string.md` at line 110, The table row for the `characters` field contains an unescaped pipe in the Type cell which breaks Markdown table parsing; update the Type cell for the `characters` row so the pipe is escaped (e.g., "string\|array") or use an inline HTML code tag to prevent splitting the column, ensuring the table renders correctly; locate the row containing `characters` in the table and adjust the Type cell accordingly.packages/core/js/domain/parser/DomainKeywordTokenStream.js-7-19 (1)
7-19:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winGuard empty token streams to prevent
.typedereference crashes.If
tokensis empty,peek()returnsundefined, andmatch()throws when reading.type.💡 Proposed fix
peek(offset = 0) { - return this.tokens[this.index + offset] || this.tokens[this.tokens.length - 1]; + if (this.tokens.length === 0) { + return { type: 'EOF', value: '', start: 0, end: 0 }; + } + return this.tokens[this.index + offset] || this.tokens[this.tokens.length - 1]; }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/core/js/domain/parser/DomainKeywordTokenStream.js` around lines 7 - 19, The match() method dereferences peek().type without guarding against an empty tokens array; change match(type) to first call const t = this.peek() and return false if !t, otherwise compare t.type === type; also consider updating peek() or consume() to handle empty streams consistently (symbols: peek, match, consume, tokens, index) so no method reads .type on undefined.packages/core/src/tests/data_generation/unit/domain/domain-literal-exec.test.js-11-11 (1)
11-11:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAssert exact literal passthrough, not just defined.
On Line 11,
not.toBeUndefined()can pass even if the wrong value is returned.Suggested fix
- expect(result).not.toBeUndefined(); + expect(result).toBe(1);🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/core/src/tests/data_generation/unit/domain/domain-literal-exec.test.js` at line 11, The test currently only asserts that result is defined using expect(result).not.toBeUndefined(); replace this with an exact equality assertion that checks the literal value passed through (determine the expected literal from the test setup) — use expect(result).toBe(expectedLiteral) for primitives or expect(result).toEqual(expectedLiteral)/toStrictEqual(expectedLiteral) for objects/arrays; update the assertion in domain-literal-exec.test.js where the variable result is asserted so the test fails on incorrect values rather than merely undefined.packages/core/src/tests/data_generation/unit/domain/domain-keyword-params-usage.test.js-212-214 (1)
212-214:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAvoid executing the same keyword twice in one test path.
On Line 212 and Line 213, the runtime delegate is called twice. That can make tests flaky for stateful/non-deterministic delegates.
Suggested fix
- expect(() => executeDomainKeyword(keyword.keyword, { faker, args })).not.toThrow(); - const result = executeDomainKeyword(keyword.keyword, { faker, args }); + let result; + expect(() => { + result = executeDomainKeyword(keyword.keyword, { faker, args }); + }).not.toThrow(); expect(result).not.toBeUndefined();🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/core/src/tests/data_generation/unit/domain/domain-keyword-params-usage.test.js` around lines 212 - 214, The test calls executeDomainKeyword(keyword.keyword, { faker, args }) twice which can make it flaky; replace both calls with a single invocation stored in a local variable (e.g. let result = executeDomainKeyword(keyword.keyword, { faker, args })), and assert against that variable (expect(result).not.toBeUndefined()); if you still need to assert "not to throw", wrap the single call in a try/catch and fail the test on catch instead of calling the function twice.scripts/generate-domain-docs.mjs-107-113 (1)
107-113:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winRemove unused
valueForTypefunction.This function is defined but never called. The inline logic at lines 260-266 and
sampleValueForArghandle the actual requirements.🧹 Proposed fix
-const valueForType = (typeName) => { - const first = String(typeName || '').split('|').map(s=>s.trim()).find(Boolean) || 'string'; - if (first === 'number') return '1'; - if (first === 'boolean') return 'true'; - if (first === 'array') return '["sample"]'; - return '"sample"'; -}; - const invocationOverrides = {🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/generate-domain-docs.mjs` around lines 107 - 113, Remove the unused helper function valueForType from the file: delete its entire declaration (const valueForType = ...) since sampleValueForArg and the inline logic already implement the behavior; after removal, run a quick search in this module for "valueForType" to ensure there are no remaining references and that sampleValueForArg (and the inline logic at the other location) cover the needed functionality.
🧹 Nitpick comments (4)
docs-src/docs/040-test-data/domain/210-number.md (1)
28-36: ⚡ Quick winAdd example return values for
number.bigInt.Unlike other methods in this file,
number.bigIntlacks example return values. Adding them would improve consistency and help users understand the expected output format.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs-src/docs/040-test-data/domain/210-number.md` around lines 28 - 36, The examples for number.bigInt are missing example return values; update the two examples under number.bigInt to include output blocks showing representative BigInt results (e.g., an integer with the BigInt suffix) — add an output fenced block after the `number.bigInt()` example with a sample like a BigInt literal (for example 42n) and another output block after `number.bigInt(value="sample")` showing a corresponding BigInt result (for example 123n) so the docs match other methods' example/return format.packages/core/src/tests/data_generation/unit/domain/domain-datatype-exec.test.js (1)
5-8: ⚡ Quick winAssert the boolean contract directly for
datatype.boolean.Line 8 currently passes even if the implementation returns a non-boolean placeholder (e.g., string). This test should enforce type-level behavior.
✅ Tightened assertion
test('executes datatype.boolean', () => { const result = executeDomainKeyword('datatype.boolean', { faker, args: [] }); - console.log('datatype.boolean', result); - expect(result).not.toBeUndefined(); + expect(typeof result).toBe('boolean'); });🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/core/src/tests/data_generation/unit/domain/domain-datatype-exec.test.js` around lines 5 - 8, The test "executes datatype.boolean" currently only checks that executeDomainKeyword('datatype.boolean', { faker, args: [] }) returns something; change the assertion to enforce the boolean contract by asserting the returned value is a boolean (e.g., use typeof result === 'boolean' or an equivalent matcher) so that executeDomainKeyword('datatype.boolean', ...) must actually produce a boolean; update the assertion in the test for executeDomainKeyword to reflect this stricter type check.packages/core/src/tests/data_generation/unit/domain/domain-airline-exec.test.js (1)
5-81: 🏗️ Heavy liftConsolidate these smoke tests into a table-driven helper and remove debug logging.
Line 7 and similar
console.log(...)calls add CI noise, and the copy/paste test structure is costly to maintain across the growing keyword set. A single parameterized test keeps behavior identical while reducing drift risk.♻️ Proposed refactor pattern
describe('airline domain keyword execution', () => { - test('executes airline.aircraftType', () => { - const result = executeDomainKeyword('airline.aircraftType', { faker, args: [] }); - console.log('airline.aircraftType', result); - expect(result).not.toBeUndefined(); - }); - // ... repeated per keyword + const keywords = [ + 'airline.aircraftType', + 'airline.airline', + 'airline.airline.iataCode', + 'airline.airline.name', + 'airline.airplane', + 'airline.airplane.iataTypeCode', + 'airline.airplane.name', + 'airline.airport', + 'airline.airport.iataCode', + 'airline.airport.name', + 'airline.flightNumber', + 'airline.recordLocator', + 'airline.seat', + ]; + + test.each(keywords)('executes %s', (keyword) => { + const result = executeDomainKeyword(keyword, { faker, args: [] }); + expect(result).toBeDefined(); + expect(result).not.toBeNull(); + }); });🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/core/src/tests/data_generation/unit/domain/domain-airline-exec.test.js` around lines 5 - 81, The tests duplicate calls to executeDomainKeyword and include console.log noise; replace the many individual tests with a single table-driven parameterized test using test.each (or it.each) that iterates over an array of keyword strings (e.g., 'airline.aircraftType', 'airline.airline', ... ), calls executeDomainKeyword({ faker, args: [] }) for each keyword, and asserts result is not undefined; remove all console.log(...) calls. Ensure the array contains every keyword previously tested and keep the test file name and describe block intact so only the individual test cases are collapsed into the new parameterized test.packages/core/src/tests/data_generation/unit/domain/domain-internet-exec.test.js (1)
7-7: ⚡ Quick winRemove debug logging from tests before merge.
These
console.logcalls add noisy CI output without strengthening assertions. Please drop them (or gate them behind a debug flag).Also applies to: 13-13, 19-19, 25-25, 31-31, 37-37, 43-43, 49-49, 55-55, 61-61, 67-67, 73-73, 79-79, 85-85, 91-91, 97-97, 103-103, 109-109, 115-115, 121-121, 127-127, 133-133, 139-139
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/core/src/tests/data_generation/unit/domain/domain-internet-exec.test.js` at line 7, Remove the debug console.log calls in the test file (e.g., the console.log('internet.color', result) and the other similar console.log(...) calls listed) so tests don't produce noisy CI output; either delete those lines or wrap them behind a dedicated DEBUG flag check (process.env.DEBUG) and ensure assertions remain unchanged; search for console.log in domain-internet-exec.test.js and remove or gate each occurrence.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs-src/docs/040-test-data/domain/180-location.md`:
- Around line 356-359: Remove the non-existent `value` parameter and update the
`useFullAddress` description for the location.streetAddress() entry: delete the
`value` row and replace the `useFullAddress` description with "When true,
generates a full address including apartment/suite numbers. When false or
omitted, generates only the street address." Target the table row entries for
`useFullAddress` and `value` that document location.streetAddress() so the docs
match Faker.js v9.7.0.
In `@packages/core/js/data_generation/domain/domainTestDataRuleValidator.js`:
- Around line 14-17: The domain validator currently blocks 'awd.domain.helpers.'
and 'domain.helpers.' but misses bare 'helpers.*', causing inconsistent
validation; update the check in domainTestDataRuleValidator (the ruleSpec
startsWith conditional that sets this.validationError) to also test for
ruleSpec.startsWith('helpers.') and return false with the same
'helpers_not_supported_in_domain: helpers.* is faker-only; use faker.helpers.*'
message so bare helpers.* is rejected consistently with row-based domain
validation.
In `@packages/core/js/domain/parser/DomainKeywordParser.js`:
- Around line 64-73: The early return when Object.keys(named).length === 0 skips
validating the maximum allowed positional arguments; update the logic in
DomainKeywordParser (the block handling named, positional and schema) so that
you first check if positional.length > schema.length and return the same error
object when true, and only after passing that check return { ok: true, args:
positional }; ensure the check references the existing symbols named, positional
and schema and uses the same error shape as the later positional-length check.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-system-exec.test.js`:
- Around line 54-59: The test failure is due to system.fileExt forwarding the
mimeType as a positional arg to faker.system.fileExt instead of an options
object; update the domain keyword definition for "system.fileExt" to include
argTransform: 'optionsFromHelpArgs' so that executeDomainKeyword and the keyword
processing will convert positional help args into the options object shape faker
expects (this aligns with the TODO noted in domain-keyword-params-usage.test.js
and fixes the behavior asserted by the unit test in domain-system-exec.test.js).
---
Outside diff comments:
In `@packages/core-ui/js/gui_components/testdatadefn.js`:
- Around line 847-850: The AG Grid column definition for the 'type' field uses
SelectFilterEditor with only FAKER_COMMANDS, so domain commands are missing;
update the cellEditorParams for the SelectFilterEditor in the 'type' column (and
the other identical block around the other occurrence) to include the domain
command list as well—merge FAKER_COMMANDS with the domain commands constant
(e.g., DOMAIN_COMMANDS or the shared COMMANDS array used for Tabulator) so the
values passed to cellEditorParams are the combined list of faker + domain
commands.
In `@packages/core-ui/src/tests/generator/data-generator-page.test.js`:
- Around line 96-1437: Unit tests for packages/core-ui (including
data-generator-page.test.js) passed but browser tests were not executed;
add/enable running the browser test suite (pnpm run test:browser) in CI or local
pre-merge steps so the browser-only tests run in a proper webserver environment.
Update the CI workflow (or package.json scripts/README) to start the required
webserver and run the test:browser script, ensuring the DataGeneratorPage
browser scenarios in data-generator-page.test.js are executed; if CI cannot
support browser tests, add a clear gating note in the PR/merge checklist
indicating that pnpm run test:browser must be run locally before merge.
---
Minor comments:
In `@docs-src/docs/040-test-data/domain/020-airline.md`:
- Around line 209-210: The doc entries for airline.flightNumber and
airline.recordLocator are truncated mid-sentence; update the descriptive text
for both symbols so each is a complete sentence (e.g., for airline.flightNumber
finish with “...Sometimes they are prefixed by a carrier code or include leading
zeros to reach up to 4 digits.” and for airline.recordLocator finish with
“...used as a short alphanumeric booking reference typically 6 characters long,
composed of uppercase letters and digits.”) ensuring the summaries are clear,
complete sentences and consistent with surrounding documentation.
In `@docs-src/docs/040-test-data/domain/050-color.md`:
- Around line 196-197: The docstring for the color.lch description is cut off
mid-sentence; open the documentation for the color.lch method and either
complete the truncated clause so the description reads as a full, unambiguous
sentence (e.g., explain the LCH color range and what the "upper bound" refers
to) or remove the dangling fragment entirely so the reference is clear—update
the text around the "Returns an LCH color. Even though upper bound of" fragment
to a complete sentence referencing color.lch.
In `@docs-src/docs/040-test-data/domain/060-commerce.md`:
- Around line 45-46: Update the commerce.isbn parameter descriptions: replace
the placeholder for `separator` with a concrete explanation that it is a string
inserted between ISBN digit groups (e.g., "-" or " ") or an empty string for no
separator and note the default behavior; tighten `variant` to state clearly that
it accepts only "10" or "13" (string) to return a 10‑digit or 13‑digit ISBN
respectively and indicate the default value if any. Locate the `commerce.isbn`
parameter table entries for `separator` and `variant` and replace the existing
lines accordingly.
In `@docs-src/docs/040-test-data/domain/070-company.md`:
- Around line 114-115: Several method description strings end with the
duplicated punctuation "end user.."—replace the double period with a single
period in each occurrence. Locate the three descriptions containing the exact
substring "end user.." and update them to "end user." so the sentences read with
a single trailing period; ensure you update all occurrences (the ones matching
that exact phrase) in this markdown so punctuation is consistent.
In `@docs-src/docs/040-test-data/domain/160-internet.md`:
- Line 121: The table cell for the allowSpecialCharacters property contains raw
pipe characters which break Markdown table parsing; update the description for
`allowSpecialCharacters` by escaping each `|` (e.g., replace `|` with `\|` or
use HTML entity `&`#124`;`) or wrap the entire description in a code span so the
pipes are treated as literal characters and the table renders correctly.
In `@docs-src/docs/040-test-data/domain/170-literal.md`:
- Line 9: Update the documentation sentence that currently says "The `literal`
domain maps domain keywords to underlying faker implementations" to explicitly
state that the `literal` domain does NOT invoke faker and simply returns
user-provided values; locate the `literal` domain docs and replace or augment
that phrase so it reads something like "`literal` returns user-specified values
directly and does not call faker" to avoid the misleading implication that it
uses faker.
In `@docs-src/docs/040-test-data/domain/180-location.md`:
- Around line 191-192: Replace the HTML-entity-encoded JSON examples with plain
JSON braces: update the two return-value lines that currently contain
`&`#123`;"name":"Tagalog","alpha2":"tl","alpha3":"tgl"&`#125`;` and
`&`#123`;"name":"Azerbaijani","alpha2":"az","alpha3":"aze"&`#125`;` to use normal
JSON syntax like {"name":"Tagalog","alpha2":"tl","alpha3":"tgl"} and
{"name":"Azerbaijani","alpha2":"az","alpha3":"aze"} so the examples are readable
and consistent.
In `@docs-src/docs/040-test-data/domain/190-lorem.md`:
- Around line 24-31: Update the parameter descriptions for lorem.lines: replace
the placeholders for `min`, `max`, and `lineCount` with clear descriptions
similar to `lineCountMin`/`lineCountMax`—e.g., `min` should describe the minimum
number of words (or characters) per generated line, `max` should describe the
maximum number of words (or characters) per generated line, and `lineCount`
should describe a fixed number of lines to generate (overriding min/max when
provided); update the table entries for `min`, `max`, and `lineCount` in the
`lorem.lines` docs to these clearer descriptions so they match the clarity of
`lineCountMin` and `lineCountMax`.
In `@docs-src/docs/040-test-data/domain/210-number.md`:
- Around line 24-27: Update the `number.bigInt` parameter typing in the domain
keyword definitions so the `value` arg accepts all supported primitives and the
optional options object: change the `value` type in
packages/core/js/domain/domain-keyword-definitions.js (the `number.bigInt`
entry) from `string|number|boolean` to `bigint|number|string|boolean` (or a
union that also allows an options object with `{ min?: bigint|number|string,
max?: bigint|number|string, multipleOf?: bigint|number|string }`), and ensure
any description mentions the optional options object with min, max and
multipleOf so the definition matches faker.js behavior.
In `@docs-src/docs/040-test-data/domain/240-science.md`:
- Around line 33-34: Replace the HTML-entity encoded braces in the example JSON
snippets with plain JSON syntax: change occurrences like
`&`#123`;"symbol":"N","name":"Nitrogen","atomicNumber":7&`#125`;` and
`&`#123`;"symbol":"Sn","name":"Tin","atomicNumber":50&`#125`;` to use standard curly
braces (e.g., {"symbol":"N",...}) so the examples are valid, readable JSON; make
the same replacements for the other occurrences referenced (the similar examples
at lines 109-110).
In `@docs-src/docs/040-test-data/domain/250-string.md`:
- Line 110: The table row for the `characters` field contains an unescaped pipe
in the Type cell which breaks Markdown table parsing; update the Type cell for
the `characters` row so the pipe is escaped (e.g., "string\|array") or use an
inline HTML code tag to prevent splitting the column, ensuring the table renders
correctly; locate the row containing `characters` in the table and adjust the
Type cell accordingly.
In `@docs-src/docs/040-test-data/domain/260-system.md`:
- Line 89: Update the description for the includeNonStandard field to use
correct punctuation for "etc" so it reads either "etc. text labels" or "etc.,
text labels"; locate the table row describing `includeNonStandard` and change
"etc text labels" to the punctuated form (e.g., "Whether to include a `@yearly`,
`@monthly`, `@daily`, etc. text labels in the generated expression.").
In `@packages/core/js/domain/parser/DomainKeywordTokenStream.js`:
- Around line 7-19: The match() method dereferences peek().type without guarding
against an empty tokens array; change match(type) to first call const t =
this.peek() and return false if !t, otherwise compare t.type === type; also
consider updating peek() or consume() to handle empty streams consistently
(symbols: peek, match, consume, tokens, index) so no method reads .type on
undefined.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-keyword-params-usage.test.js`:
- Around line 212-214: The test calls executeDomainKeyword(keyword.keyword, {
faker, args }) twice which can make it flaky; replace both calls with a single
invocation stored in a local variable (e.g. let result =
executeDomainKeyword(keyword.keyword, { faker, args })), and assert against that
variable (expect(result).not.toBeUndefined()); if you still need to assert "not
to throw", wrap the single call in a try/catch and fail the test on catch
instead of calling the function twice.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-literal-exec.test.js`:
- Line 11: The test currently only asserts that result is defined using
expect(result).not.toBeUndefined(); replace this with an exact equality
assertion that checks the literal value passed through (determine the expected
literal from the test setup) — use expect(result).toBe(expectedLiteral) for
primitives or
expect(result).toEqual(expectedLiteral)/toStrictEqual(expectedLiteral) for
objects/arrays; update the assertion in domain-literal-exec.test.js where the
variable result is asserted so the test fails on incorrect values rather than
merely undefined.
In `@README.md`:
- Line 106: The sentence "The`awd` and `domain` prefixes are optional:" has a
missing space before the opening backtick; update that Markdown to "The `awd`
and `domain` prefixes are optional:" by inserting a space before the first
backtick so formatting and spacing are correct in README.md (look for the
literal text "The`awd` and `domain` prefixes are optional:" to locate the line).
In `@scripts/generate-domain-docs.mjs`:
- Around line 107-113: Remove the unused helper function valueForType from the
file: delete its entire declaration (const valueForType = ...) since
sampleValueForArg and the inline logic already implement the behavior; after
removal, run a quick search in this module for "valueForType" to ensure there
are no remaining references and that sampleValueForArg (and the inline logic at
the other location) cover the needed functionality.
---
Nitpick comments:
In `@docs-src/docs/040-test-data/domain/210-number.md`:
- Around line 28-36: The examples for number.bigInt are missing example return
values; update the two examples under number.bigInt to include output blocks
showing representative BigInt results (e.g., an integer with the BigInt suffix)
— add an output fenced block after the `number.bigInt()` example with a sample
like a BigInt literal (for example 42n) and another output block after
`number.bigInt(value="sample")` showing a corresponding BigInt result (for
example 123n) so the docs match other methods' example/return format.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-airline-exec.test.js`:
- Around line 5-81: The tests duplicate calls to executeDomainKeyword and
include console.log noise; replace the many individual tests with a single
table-driven parameterized test using test.each (or it.each) that iterates over
an array of keyword strings (e.g., 'airline.aircraftType', 'airline.airline',
... ), calls executeDomainKeyword({ faker, args: [] }) for each keyword, and
asserts result is not undefined; remove all console.log(...) calls. Ensure the
array contains every keyword previously tested and keep the test file name and
describe block intact so only the individual test cases are collapsed into the
new parameterized test.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-datatype-exec.test.js`:
- Around line 5-8: The test "executes datatype.boolean" currently only checks
that executeDomainKeyword('datatype.boolean', { faker, args: [] }) returns
something; change the assertion to enforce the boolean contract by asserting the
returned value is a boolean (e.g., use typeof result === 'boolean' or an
equivalent matcher) so that executeDomainKeyword('datatype.boolean', ...) must
actually produce a boolean; update the assertion in the test for
executeDomainKeyword to reflect this stricter type check.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-internet-exec.test.js`:
- Line 7: Remove the debug console.log calls in the test file (e.g., the
console.log('internet.color', result) and the other similar console.log(...)
calls listed) so tests don't produce noisy CI output; either delete those lines
or wrap them behind a dedicated DEBUG flag check (process.env.DEBUG) and ensure
assertions remain unchanged; search for console.log in
domain-internet-exec.test.js and remove or gate each occurrence.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 6d082393-c0b8-4a7e-9fe0-a2cff6c4b7b0
📒 Files selected for processing (107)
README.mdapps/mcp/src/index.jsapps/mcp/src/mcp.test.jsapps/web/app.htmldocs-src/blog/2026-05-18-domain-abstraction-over-raw-faker.mddocs-src/docs/040-test-data/010-test-data-generation.mddocs-src/docs/040-test-data/016-generate-to-file.mddocs-src/docs/040-test-data/030-faker-test-data.mdxdocs-src/docs/040-test-data/050-pairwise-testing.mddocs-src/docs/040-test-data/domain/000-domain-test-data.mddocs-src/docs/040-test-data/domain/020-airline.mddocs-src/docs/040-test-data/domain/030-animal.mddocs-src/docs/040-test-data/domain/040-book.mddocs-src/docs/040-test-data/domain/050-color.mddocs-src/docs/040-test-data/domain/060-commerce.mddocs-src/docs/040-test-data/domain/070-company.mddocs-src/docs/040-test-data/domain/080-database.mddocs-src/docs/040-test-data/domain/090-datatype.mddocs-src/docs/040-test-data/domain/100-date.mddocs-src/docs/040-test-data/domain/110-finance.mddocs-src/docs/040-test-data/domain/120-food.mddocs-src/docs/040-test-data/domain/130-git.mddocs-src/docs/040-test-data/domain/140-hacker.mddocs-src/docs/040-test-data/domain/150-image.mddocs-src/docs/040-test-data/domain/160-internet.mddocs-src/docs/040-test-data/domain/170-literal.mddocs-src/docs/040-test-data/domain/180-location.mddocs-src/docs/040-test-data/domain/190-lorem.mddocs-src/docs/040-test-data/domain/200-music.mddocs-src/docs/040-test-data/domain/210-number.mddocs-src/docs/040-test-data/domain/220-person.mddocs-src/docs/040-test-data/domain/230-phone.mddocs-src/docs/040-test-data/domain/240-science.mddocs-src/docs/040-test-data/domain/250-string.mddocs-src/docs/040-test-data/domain/260-system.mddocs-src/docs/040-test-data/domain/270-vehicle.mddocs-src/docs/040-test-data/domain/280-word.mddocs-src/docs/040-test-data/domain/_category_.jsondocs-src/docs/040-test-data/faker/000-faker-based-data.mdxdocs-src/docs/040-test-data/faker/010-helpers.mddocs-src/docs/040-test-data/faker/_category_.jsonpackages/core-ui/js/gui_components/data-generator-page.jspackages/core-ui/js/gui_components/domain-command-help-metadata.jspackages/core-ui/js/gui_components/domain-commands.jspackages/core-ui/js/gui_components/test-data-amend.jspackages/core-ui/js/gui_components/testdatadefn.jspackages/core-ui/src/tests/generator/data-generator-page.test.jspackages/core-ui/src/tests/grid/test-data-defn-engine-compat.test.jspackages/core-ui/src/tests/grid/testdatadefn-faker-dropdown-literals.test.jspackages/core-ui/src/tests/utils/test-data-amend.test.jspackages/core/js/data_generation/domain/domainTestDataGenerator.jspackages/core/js/data_generation/domain/domainTestDataRuleValidator.jspackages/core/js/data_generation/faker/fakerCommand.jspackages/core/js/data_generation/rulesBasedDataGenerator.jspackages/core/js/data_generation/schema-conversion.jspackages/core/js/data_generation/schema-parsing-errors.jspackages/core/js/data_generation/schema-rules-adapter.jspackages/core/js/data_generation/testDataRulesCompiler.jspackages/core/js/domain/domain-keyword-definitions.jspackages/core/js/domain/domain-keyword-parser.jspackages/core/js/domain/domain-keywords.jspackages/core/js/domain/parser/DomainKeywordInvocationParser.jspackages/core/js/domain/parser/DomainKeywordLexer.jspackages/core/js/domain/parser/DomainKeywordParser.jspackages/core/js/domain/parser/DomainKeywordTokenStream.jspackages/core/package.jsonpackages/core/src/index.jspackages/core/src/tests/core-api/generateFromTextSpec.test.jspackages/core/src/tests/data_generation/domain-compiler-precedence.test.jspackages/core/src/tests/data_generation/domain-generation-path.test.jspackages/core/src/tests/data_generation/enum-compiler-integration.test.jspackages/core/src/tests/data_generation/generateDataFromFakerSpec.test.jspackages/core/src/tests/data_generation/generateDataFromMultiLineSpec.test.jspackages/core/src/tests/data_generation/schema-rules-adapter.test.jspackages/core/src/tests/data_generation/unit/domain/domain-airline-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-animal-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-book-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-color-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-commerce-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-company-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-database-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-datatype-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-date-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-doc-examples.test.jspackages/core/src/tests/data_generation/unit/domain/domain-doc-param-examples.test.jspackages/core/src/tests/data_generation/unit/domain/domain-finance-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-food-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-git-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-hacker-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-image-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-internet-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-keyword-params-usage.test.jspackages/core/src/tests/data_generation/unit/domain/domain-keyword-parser.test.jspackages/core/src/tests/data_generation/unit/domain/domain-literal-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-location-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-lorem-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-music-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-number-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-person-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-phone-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-science-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-string-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-system-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-vehicle-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-word-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domainKeywords.test.jsscripts/generate-domain-docs.mjs
💤 Files with no reviewable changes (1)
- docs-src/docs/040-test-data/030-faker-test-data.mdx
There was a problem hiding this comment.
Actionable comments posted: 8
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
packages/core-ui/js/gui_components/testdatadefn.js (1)
1063-1073:⚠️ Potential issue | 🟠 Major | ⚡ Quick winPreserve unknown command text instead of silently dropping rule definitions.
When a type is unrecognized, Line 1072 logs and leaves
ruleLineempty. That can erase valid-but-unknown schema rules during grid→text sync.Suggested fix
default: { let dataType = resolvedType; if (dataType.startsWith('faker.')) { dataType = dataType.replace('faker.', ''); } if (DOMAIN_COMMANDS.includes(dataType) || FAKER_COMMANDS.includes(dataType)) { ruleLine = dataType + (resolvedRowData.value || ''); } else { - // throw error? ignore? don't know what the command is so it won't parse - // ignoring - console.log(`UNKNOWN COMMAND: ${dataType} ${resolvedRowData.value}`); + // Preserve unknown/raw content to avoid data loss during round-trip editing. + const fallbackValue = String(resolvedRowData.value ?? ''); + ruleLine = dataType ? `${dataType}${fallbackValue}` : fallbackValue; + console.log(`UNKNOWN COMMAND: ${dataType} ${resolvedRowData.value}`); } }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/core-ui/js/gui_components/testdatadefn.js` around lines 1063 - 1073, The current branch logs unknown commands but leaves ruleLine empty, which causes valid-but-unknown rules to be dropped; modify the else branch so that when a type isn't in DOMAIN_COMMANDS or FAKER_COMMANDS you preserve the original text by assigning ruleLine to the reconstructed command (use resolvedType or the un-prefixed dataType plus resolvedRowData.value) instead of leaving it blank—update the else block that references dataType, resolvedType, DOMAIN_COMMANDS, FAKER_COMMANDS, ruleLine, and resolvedRowData so unknown commands are stored (e.g., ruleLine = resolvedType + (resolvedRowData.value || '') or similar) and keep the console.log for visibility.
🧹 Nitpick comments (2)
apps/web/src/tests/browser/abstractions/app.page.js (1)
29-35: ⚡ Quick winConsider catching only timeout errors to avoid masking other failures.
The empty catch block silently swallows all errors, including potential selector issues, network failures, or other legitimate problems. Consider checking the error type to ensure only timeout-related errors trigger the fallback.
🔍 Suggested improvement
async waitUntilReady() { try { await expect(this.initialLoading).toBeHidden({ timeout: 15000 }); - } catch { + } catch (error) { + // Only use fallback for timeout errors during slow dev-server startup + if (!error.message?.includes('timeout') && !error.message?.includes('Timeout')) { + throw error; + } // Fallback for intermittent loader visibility under slow dev-server startup: // if core components are interactive, treat the page as ready. await expect(this.gridEditor.grid).toBeVisible({ timeout: 15000 }); }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/web/src/tests/browser/abstractions/app.page.js` around lines 29 - 35, The try/catch around await expect(this.initialLoading).toBeHidden(...) is swallowing all errors; change it to catch only Playwright timeout errors (e.g. check error.name === 'TimeoutError' or error.message includes 'Timeout') and run the fallback await expect(this.gridEditor.grid).toBeVisible(...) only in that case, rethrow any other errors so selector/network failures or other issues aren't masked; reference the existing this.initialLoading, this.gridEditor.grid and the toBeHidden/toBeVisible expectations when implementing the check.packages/core/src/tests/data_generation/unit/domain/domain-music-exec.test.js (1)
8-8: 💤 Low valueConsider removing console.log statements from tests.
The
console.logcalls clutter test output. If these were added for debugging, they can be safely removed now that the tests are working.🧹 Proposed cleanup
test('executes music.album', () => { const result = executeDomainKeyword('music.album', { faker, args: [] }); - console.log('music.album', result); assertDomainKeywordResult('music.album', result); });Apply the same pattern to remove the other three console.log calls.
Also applies to: 14-14, 20-20, 26-26
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/core/src/tests/data_generation/unit/domain/domain-music-exec.test.js` at line 8, Remove the debugging console.log calls from the unit test file domain-music-exec.test.js: delete the console.log('music.album', result) and the three other console.log statements reported (lines shown in the review) so tests no longer print debug output; search for all occurrences of console.log in this file (including the ones at the other mentioned spots) and remove them, then re-run the test suite to confirm no regressions in tests referencing the same assertions or variables.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs-src/docs/040-test-data/domain/170-literal.md`:
- Line 26: The table row for the `value` field is breaking because the pipe
characters in the type column are being parsed as separators; update the `value`
row in the table so the pipes in the type cell are escaped (e.g., replace each |
with \| inside the type cell for `string|number|boolean`), ensuring the type
column reads as a single cell and the table renders correctly; target the row
that begins with `value` in the 170-literal.md table and only change the type
cell to use escaped pipes.
In `@docs-src/docs/040-test-data/domain/190-lorem.md`:
- Line 19: Update the method description string that currently reads "Generates
the given number lines of lorem separated by `'\n'`." to read "Generates the
given number of lines of lorem separated by `'\n'`." Locate the phrase in the
docs content (search for "the given number lines" or the sentence containing
"Generates the") and replace it with the corrected wording so the documentation
now includes "number of lines".
In `@docs-src/docs/040-test-data/domain/210-number.md`:
- Line 26: The table cell for the `value` field uses unescaped union pipes
(`string|number|boolean`) which breaks table rendering; update that cell to
escape the pipe characters (e.g., change the type to `string\|number\|boolean`
or use HTML entity equivalents) in the row containing `value` so the markdown
table renders correctly.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-date-exec.test.js`:
- Around line 39-40: The test is asserting the wrong keyword: change the
assertions in the failing test so they validate 'date.birthdate' instead of
'date.between'; specifically update the console.log tag and the call to
assertDomainKeywordResult('date.between', result) to use 'date.birthdate' (keep
the variable name result and existing test logic unchanged).
In
`@packages/core/src/tests/data_generation/unit/domain/domain-location-exec.test.js`:
- Around line 76-80: Two location tests call executeDomainKeyword with
'location.longitude'/'location.latitude' but log and assert the opposite
keyword; update the console.log and assertDomainKeywordResult calls to use the
exact same keyword string passed to executeDomainKeyword so the test name, the
executed keyword, the console output, and the assertion all match (fix within
the tests named "executes location.longitude" and "executes location.latitude"
by editing the console.log and assertDomainKeywordResult invocations to
reference the corresponding keyword); ensure both occurrences (the block around
executeDomainKeyword('location.longitude') and the block around
executeDomainKeyword('location.latitude')) are corrected.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-number-exec.test.js`:
- Around line 49-53: The test "executes number.octal" is asserting the wrong
keyword; update the assertion to validate octal output by calling
assertDomainKeywordResult with 'number.octal' instead of 'number.int' (and
optionally update the console.log message from 'number.int' to 'number.octal')
so the executeDomainKeyword('number.octal', { faker, args: [] }) result is
checked against the correct domain keyword.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-string-exec.test.js`:
- Around line 20-22: Two tests in domain-string-exec.test.js are asserting the
wrong keyword names — change the assertion targets for the `string.alphanumeric`
and `string.octal` tests so they call
`assertDomainKeywordResult('string.alphanumeric', result)` and
`assertDomainKeywordResult('string.octal', result)` respectively (they currently
reference `string.alpha`/wrong names). Locate the failing tests by the test
descriptions or the existing `assertDomainKeywordResult` calls in the file and
update the string literal arguments to the correct keyword names to ensure those
validations map to the proper domain keywords.
In `@README.md`:
- Around line 92-116: Update the docs block for domain rules: change the phrase
"domain mapped" to "domain-mapped" and add an explicit language identifier to
both fenced code blocks for the examples (use e.g. ```txt) so the examples
showing "First Name / awd.domain.person.firstName" and "Noun /
domain.hacker.noun" and the alternate examples "First Name / person.firstName"
and "Noun / hacker.noun" are wrapped with ```txt instead of bare ```; ensure the
original example strings (awd.domain.person.firstName, domain.hacker.noun,
person.firstName, hacker.noun) remain unchanged.
---
Outside diff comments:
In `@packages/core-ui/js/gui_components/testdatadefn.js`:
- Around line 1063-1073: The current branch logs unknown commands but leaves
ruleLine empty, which causes valid-but-unknown rules to be dropped; modify the
else branch so that when a type isn't in DOMAIN_COMMANDS or FAKER_COMMANDS you
preserve the original text by assigning ruleLine to the reconstructed command
(use resolvedType or the un-prefixed dataType plus resolvedRowData.value)
instead of leaving it blank—update the else block that references dataType,
resolvedType, DOMAIN_COMMANDS, FAKER_COMMANDS, ruleLine, and resolvedRowData so
unknown commands are stored (e.g., ruleLine = resolvedType +
(resolvedRowData.value || '') or similar) and keep the console.log for
visibility.
---
Nitpick comments:
In `@apps/web/src/tests/browser/abstractions/app.page.js`:
- Around line 29-35: The try/catch around await
expect(this.initialLoading).toBeHidden(...) is swallowing all errors; change it
to catch only Playwright timeout errors (e.g. check error.name ===
'TimeoutError' or error.message includes 'Timeout') and run the fallback await
expect(this.gridEditor.grid).toBeVisible(...) only in that case, rethrow any
other errors so selector/network failures or other issues aren't masked;
reference the existing this.initialLoading, this.gridEditor.grid and the
toBeHidden/toBeVisible expectations when implementing the check.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-music-exec.test.js`:
- Line 8: Remove the debugging console.log calls from the unit test file
domain-music-exec.test.js: delete the console.log('music.album', result) and the
three other console.log statements reported (lines shown in the review) so tests
no longer print debug output; search for all occurrences of console.log in this
file (including the ones at the other mentioned spots) and remove them, then
re-run the test suite to confirm no regressions in tests referencing the same
assertions or variables.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 6b920932-c341-4c62-a262-1e4091fe8846
📒 Files selected for processing (72)
.gitignoreREADME.mdapps/web/src/tests/browser/abstraction-smoke-tests/test-data-panel-smoke.spec.jsapps/web/src/tests/browser/abstractions/app.page.jsapps/web/src/tests/browser/app-coverage/test-data/test-data-generation.spec.jsapps/web/src/tests/browser/planned-functional/helpers/output-quality-helpers.jsapps/web/src/tests/browser/planned-functional/test-data/basic-generation.spec.jsapps/web/src/tests/browser/planned-functional/test-data/multiple-columns.spec.jsapps/web/src/tests/browser/planned-functional/test-data/text-schema.spec.jsdocs-src/docs/040-test-data/domain/020-airline.mddocs-src/docs/040-test-data/domain/050-color.mddocs-src/docs/040-test-data/domain/060-commerce.mddocs-src/docs/040-test-data/domain/070-company.mddocs-src/docs/040-test-data/domain/160-internet.mddocs-src/docs/040-test-data/domain/170-literal.mddocs-src/docs/040-test-data/domain/180-location.mddocs-src/docs/040-test-data/domain/190-lorem.mddocs-src/docs/040-test-data/domain/210-number.mddocs-src/docs/040-test-data/domain/240-science.mddocs-src/docs/040-test-data/domain/250-string.mddocs-src/docs/040-test-data/domain/260-system.mdpackages/core-ui/js/gui_components/testdatadefn.jspackages/core-ui/src/tests/grid/testdatadefn-faker-dropdown-literals.test.jspackages/core/js/data_generation/all-pairs/pairwiseTestDataGenerator.jspackages/core/js/data_generation/domain/domainTestDataRuleValidator.jspackages/core/js/domain/domain-keyword-definitions.jspackages/core/js/domain/parser/DomainKeywordParser.jspackages/core/js/domain/parser/DomainKeywordTokenStream.jspackages/core/src/tests/core-api/format-option-catalog.test.jspackages/core/src/tests/core-api/generateFromTextSpec.test.jspackages/core/src/tests/data_formats/export-string-conversion-bug-fix.test.jspackages/core/src/tests/data_generation/generateDataFromMultiLineSpec.test.jspackages/core/src/tests/data_generation/pairwise-data-structure-fix.test.jspackages/core/src/tests/data_generation/pairwise.test.jspackages/core/src/tests/data_generation/quoted-enum-values.test.jspackages/core/src/tests/data_generation/unit/domain/domain-airline-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-animal-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-book-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-color-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-commerce-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-company-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-database-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-datatype-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-date-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-doc-param-examples.test.jspackages/core/src/tests/data_generation/unit/domain/domain-finance-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-food-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-git-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-hacker-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-image-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-internet-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-keyword-params-usage.test.jspackages/core/src/tests/data_generation/unit/domain/domain-keyword-parser.test.jspackages/core/src/tests/data_generation/unit/domain/domain-keyword-token-stream.test.jspackages/core/src/tests/data_generation/unit/domain/domain-literal-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-location-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-lorem-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-music-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-number-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-person-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-phone-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-result-assertions.test-helper.jspackages/core/src/tests/data_generation/unit/domain/domain-science-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-string-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-system-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-test-data-rule-validator.test.jspackages/core/src/tests/data_generation/unit/domain/domain-vehicle-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-word-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domainKeywords.test.jspackages/core/src/tests/data_generation/unit/testDataRules-collection.test.jspackages/core/src/tests/utils/outputQualityAssertions.jsscripts/generate-domain-docs.mjs
✅ Files skipped from review due to trivial changes (8)
- docs-src/docs/040-test-data/domain/260-system.md
- docs-src/docs/040-test-data/domain/240-science.md
- apps/web/src/tests/browser/planned-functional/helpers/output-quality-helpers.js
- packages/core/src/tests/utils/outputQualityAssertions.js
- docs-src/docs/040-test-data/domain/180-location.md
- docs-src/docs/040-test-data/domain/070-company.md
- docs-src/docs/040-test-data/domain/020-airline.md
- .gitignore
🚧 Files skipped from review as they are similar to previous changes (28)
- packages/core/src/tests/data_generation/unit/domain/domain-literal-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-phone-exec.test.js
- docs-src/docs/040-test-data/domain/060-commerce.md
- packages/core/src/tests/data_generation/unit/domain/domain-word-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-company-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-lorem-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-food-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-science-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-datatype-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-person-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-commerce-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-system-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-image-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-book-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-doc-param-examples.test.js
- packages/core/js/data_generation/domain/domainTestDataRuleValidator.js
- packages/core/src/tests/data_generation/unit/domain/domain-database-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-internet-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-color-exec.test.js
- packages/core-ui/src/tests/grid/testdatadefn-faker-dropdown-literals.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-keyword-parser.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-keyword-params-usage.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-hacker-exec.test.js
- scripts/generate-domain-docs.mjs
- packages/core/js/domain/parser/DomainKeywordParser.js
- packages/core/src/tests/data_generation/unit/domain/domainKeywords.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-finance-exec.test.js
- packages/core/js/domain/parser/DomainKeywordTokenStream.js
There was a problem hiding this comment.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/web/src/tests/browser/app/functional/grid-editor/row-single-select-operations/delete-selected-row.spec copy.js (1)
1-24:⚠️ Potential issue | 🔴 Critical | ⚡ Quick winRemove "copy" from the filename.
The filename
delete-selected-row.spec copy.jscontains "copy", which indicates it was created via copy-paste and not properly renamed. This will cause issues with test discovery, organization, and maintainability.Rename the file to:
delete-selected-row.spec.js🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/web/src/tests/browser/app/functional/grid-editor/row-single-select-operations/delete-selected-row.spec` copy.js around lines 1 - 24, The test file was accidentally left with " copy" in its filename; rename the file from "delete-selected-row.spec copy.js" to "delete-selected-row.spec.js" so test runners discover it properly; you can verify you're renaming the file that contains the Playwright test block test.describe('1. Grid Basic Operations') and the test titled 'Delete Rows' (and the helpers openApp, seedRows, expectNoPageErrors used inside) to preserve the same contents under the corrected filename.
🧹 Nitpick comments (2)
apps/web/src/tests/browser/generator/abstractions/components/generator-generate-options.component.js (1)
13-18: ⚡ Quick winInclude the pairwise button in readiness checks.
clickGeneratePairwise()depends on#generateAllPairsButton, butexpectReady()currently does not wait for it.Suggested patch
async expectReady() { await expect(this.container).toBeVisible(); await expect(this.rowsCountInput).toBeVisible(); await expect(this.outputFormatSelect).toBeVisible(); await expect(this.generateDataButton).toBeVisible(); + await expect(this.generatePairwiseButton).toBeVisible(); }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/web/src/tests/browser/generator/abstractions/components/generator-generate-options.component.js` around lines 13 - 18, The readiness check in expectReady() is missing the pairwise/generate-all-pairs button; update the expectReady() method to also await visibility of the generate-all-pairs control by adding a check for this.generateAllPairsButton (e.g., await expect(this.generateAllPairsButton).toBeVisible()); ensure the symbol name matches the existing property used by clickGeneratePairwise() so the pairwise button is present before tests interact with it.packages/core/src/tests/data_generation/unit/domain/domain-datatype-exec.test.js (1)
1-24: ⚡ Quick winUse a per-test Faker instance to ensure test isolation.
Seeding the imported global
fakersingleton couples this test to other suites through shared RNG state. Since Jest runs tests in parallel, create a fresh Faker instance per test usingnew Faker()(available from@faker-js/faker) to keep each test's randomness isolated.Example:
import { Faker } from '`@faker-js/faker`'; describe('datatype domain keyword execution', () => { let faker; beforeEach(() => { faker = new Faker(); faker.seed(12345); }); test('datatype.boolean can generate both true and false values', () => { const seen = new Set(); for (let index = 0; index < 200; index++) { const value = executeDomainKeyword('datatype.boolean', { faker, args: [] }); seen.add(value); if (seen.has(true) && seen.has(false)) { break; } } expect(seen.has(true)).toBe(true); expect(seen.has(false)).toBe(true); }); });🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/core/src/tests/data_generation/unit/domain/domain-datatype-exec.test.js` around lines 1 - 24, The tests currently use the shared imported faker singleton which couples RNG state across tests; change to create a fresh per-test Faker instance by importing Faker from '`@faker-js/faker`' and instantiating it in a beforeEach (e.g., let faker; beforeEach(() => { faker = new Faker(); })), then pass that instance into executeDomainKeyword calls in both tests and move the faker.seed(12345) into the beforeEach (or into the specific test) so the "datatype.boolean can generate both true and false values" test seeds only its local Faker instance rather than the global singleton.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@apps/web/src/tests/browser/app/functional/grid-editor/column-operations/rename-column.spec.js`:
- Around line 17-30: Add a post-condition asserting the header column names did
not change after the rejected rename: after calling
appPage.gridEditor.header.renameColumn(originalName, duplicateName) and
asserting gridError visibility, fetch the current names via
appPage.gridEditor.header.getColumnNames() and assert they still contain the
originalName and do not contain the duplicateName (or compare to a saved
snapshot of names from before the rename, e.g., the array returned by
getColumnNames() saved to a variable before rename). This ensures the negative
test verifies the rename was fully rejected.
In
`@apps/web/src/tests/browser/app/functional/grid-editor/row-single-select-operations/delete-selected-row.spec`
copy.js:
- Around line 15-19: After selecting two rows with
appPage.gridEditor.selectRows([0, 1]) and deleting them with
appPage.gridEditor.deleteSelectedRows(), change the final assertion so it
verifies the row count decreased by exactly 2 (use
appPage.gridEditor.renderer.countRows() and assert it equals beforeMultiDelete -
2) instead of using toBeLessThanOrEqual; keep the existing expect.poll wrapper
around the count check to wait for the async delete to complete and reference
renderer.countSelectedRows() and deleteSelectedRows() in the same test flow.
- Around line 9-13: The test uses a weak assertion (toBeLessThanOrEqual) after
calling appPage.gridEditor.deleteSelectedRows(), which can pass without any
deletion; change the assertion to verify the exact decrement by 1: after
selecting a row with appPage.gridEditor.selectRow(1) and storing
beforeSingleDelete from appPage.gridEditor.renderer.countRows(), call
appPage.gridEditor.deleteSelectedRows() and then assert (via expect.poll) that
appPage.gridEditor.renderer.countRows() equals beforeSingleDelete - 1, while
keeping the existing check that one row was selected via
appPage.gridEditor.renderer.countSelectedRows().
In
`@apps/web/src/tests/browser/generator/abstractions/components/generator-schema.component.js`:
- Line 10: Change the rows locator to be scoped to the existing rowsContainer
instead of using the page-wide selector: replace the use of
page.locator('.generator-schema-row') in the constructor with a locator called
off this.rowsContainer (e.g.,
this.rowsContainer.locator('.generator-schema-row')) so methods that reference
this.rows (used by functions around lines where methods depend on it) only match
rows inside `#generatorSchemaRows` and avoid cross-component matches.
In `@apps/web/src/tests/browser/generator/functional/schema-edit.spec.js`:
- Around line 13-19: The function expectOrderedSubstrings uses
text.indexOf(value) which always searches from the start and can mis-handle
repeated tokens; update expectOrderedSubstrings to search forward from the last
match by calling indexOf with a fromIndex (use previousIndex + 1) when locating
each value, then assert the returned nextIndex is not -1 (or greater than
previousIndex) and set previousIndex = nextIndex so subsequent searches continue
after the last match.
In `@packages/core/js/data_generation/all-pairs/pairwiseTestDataGenerator.js`:
- Line 34: Make the DomainTestDataGenerator instantiation conditional like the
others: only create this.domainGenerator when a faker instance exists (matching
the pattern used for fakerGenerator and randExpGenerator). Update the
constructor where DomainTestDataGenerator is created (reference:
DomainTestDataGenerator and domainGenerator) to wrap the new
DomainTestDataGenerator(this.faker) call in an if (faker) check, and then guard
any later usage of domainGenerator accordingly so code only accesses
domainGenerator when it was created.
---
Outside diff comments:
In
`@apps/web/src/tests/browser/app/functional/grid-editor/row-single-select-operations/delete-selected-row.spec`
copy.js:
- Around line 1-24: The test file was accidentally left with " copy" in its
filename; rename the file from "delete-selected-row.spec copy.js" to
"delete-selected-row.spec.js" so test runners discover it properly; you can
verify you're renaming the file that contains the Playwright test block
test.describe('1. Grid Basic Operations') and the test titled 'Delete Rows' (and
the helpers openApp, seedRows, expectNoPageErrors used inside) to preserve the
same contents under the corrected filename.
---
Nitpick comments:
In
`@apps/web/src/tests/browser/generator/abstractions/components/generator-generate-options.component.js`:
- Around line 13-18: The readiness check in expectReady() is missing the
pairwise/generate-all-pairs button; update the expectReady() method to also
await visibility of the generate-all-pairs control by adding a check for
this.generateAllPairsButton (e.g., await
expect(this.generateAllPairsButton).toBeVisible()); ensure the symbol name
matches the existing property used by clickGeneratePairwise() so the pairwise
button is present before tests interact with it.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-datatype-exec.test.js`:
- Around line 1-24: The tests currently use the shared imported faker singleton
which couples RNG state across tests; change to create a fresh per-test Faker
instance by importing Faker from '`@faker-js/faker`' and instantiating it in a
beforeEach (e.g., let faker; beforeEach(() => { faker = new Faker(); })), then
pass that instance into executeDomainKeyword calls in both tests and move the
faker.seed(12345) into the beforeEach (or into the specific test) so the
"datatype.boolean can generate both true and false values" test seeds only its
local Faker instance rather than the global singleton.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 54fbcf61-46a8-4a77-9e68-1ad2eeb33737
📒 Files selected for processing (112)
apps/api/src/api-service.generate.test.jsapps/cli/src/run-cli.jsapps/cli/src/tests/integration.cli-output.test.jsapps/cli/src/tests/integration.cli-params.test.jsapps/web/app.htmlapps/web/src/tests/browser/app-coverage/column-operations/column-operations.spec.jsapps/web/src/tests/browser/app-coverage/export-formats/export-formats.spec.jsapps/web/src/tests/browser/app-coverage/export-options/export-options.spec.jsapps/web/src/tests/browser/app-coverage/filtering-sorting/filtering-sorting.spec.jsapps/web/src/tests/browser/app-coverage/grid-operations/grid-basic-operations.spec.jsapps/web/src/tests/browser/app-coverage/import-export/import-export-basic.spec.jsapps/web/src/tests/browser/app-coverage/test-data/test-data-generation.spec.jsapps/web/src/tests/browser/app-coverage/ui-navigation/responsive-layout.spec.jsapps/web/src/tests/browser/app-coverage/ui-navigation/ui-navigation.spec.jsapps/web/src/tests/browser/app/abstraction-smoke-tests/app-page-abstractions-smoke.spec.jsapps/web/src/tests/browser/app/abstraction-smoke-tests/component-wiring.spec.jsapps/web/src/tests/browser/app/abstraction-smoke-tests/grid-editor-controls.spec.jsapps/web/src/tests/browser/app/abstraction-smoke-tests/grid-header-controls.spec.jsapps/web/src/tests/browser/app/abstraction-smoke-tests/tabbed-formats-options.spec.jsapps/web/src/tests/browser/app/abstraction-smoke-tests/test-data-panel-smoke.spec.jsapps/web/src/tests/browser/app/abstractions/app.page.jsapps/web/src/tests/browser/app/abstractions/components/format-options-panel.component.jsapps/web/src/tests/browser/app/abstractions/components/grid-editor.component.jsapps/web/src/tests/browser/app/abstractions/components/grid-header.component.jsapps/web/src/tests/browser/app/abstractions/components/grid-renderer.component.jsapps/web/src/tests/browser/app/abstractions/components/import-export-controls.component.jsapps/web/src/tests/browser/app/abstractions/components/tabbed-text.component.jsapps/web/src/tests/browser/app/abstractions/components/test-data-panel.component.jsapps/web/src/tests/browser/app/abstractions/components/top-navigation.component.jsapps/web/src/tests/browser/app/abstractions/helpers/output-quality-helpers.jsapps/web/src/tests/browser/app/abstractions/helpers/scenario-helpers.jsapps/web/src/tests/browser/app/abstractions/helpers/test-helpers.jsapps/web/src/tests/browser/app/functional/error-handling/boundary-conditions.spec.jsapps/web/src/tests/browser/app/functional/error-handling/browser-compatibility.spec.jsapps/web/src/tests/browser/app/functional/error-handling/invalid-import.spec.jsapps/web/src/tests/browser/app/functional/export-formats/html-export.spec.jsapps/web/src/tests/browser/app/functional/export-formats/json-export.spec.jsapps/web/src/tests/browser/app/functional/export-formats/markdown-export.spec.jsapps/web/src/tests/browser/app/functional/export-formats/other-formats.spec.jsapps/web/src/tests/browser/app/functional/export-formats/sql-export.spec.jsapps/web/src/tests/browser/app/functional/export-formats/xml-export.spec.jsapps/web/src/tests/browser/app/functional/export-options/csv-options-quote-delimited-value.spec.jsapps/web/src/tests/browser/app/functional/export-options/csv-options-unquoted-safe-value.spec.jsapps/web/src/tests/browser/app/functional/export-options/preview-copy.spec.jsapps/web/src/tests/browser/app/functional/filtering-sorting/clear-filters.spec.jsapps/web/src/tests/browser/app/functional/filtering-sorting/column-filter.spec.jsapps/web/src/tests/browser/app/functional/filtering-sorting/column-sorting.spec.jsapps/web/src/tests/browser/app/functional/filtering-sorting/global-filter.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/cell-edits/cell-editing.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/column-operations/add-columns.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/column-operations/delete-column.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/column-operations/duplicate-column.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/column-operations/rename-column.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/row-drag-drop/drag-drop-reorder.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/row-multi-select-operations/add-multiple-rows-above.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/row-multi-select-operations/add-multiple-rows-below.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/row-multi-select-operations/clear-sort-before-add-rows-below.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/row-multi-select-operations/delete-selected-rows.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/row-multi-select-operations/multi-select-b-c-delete-leaves-a-d.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/row-multi-select-operations/multi-select-range-delete-keeps-d.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/row-single-select-operations/add-row-above-selected.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/row-single-select-operations/add-row-below-selected.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/row-single-select-operations/add-single-row.spec.jsapps/web/src/tests/browser/app/functional/grid-editor/row-single-select-operations/delete-selected-row.spec copy.jsapps/web/src/tests/browser/app/functional/grid-operations/reset-table.spec.jsapps/web/src/tests/browser/app/functional/import-export/csv-download.spec.jsapps/web/src/tests/browser/app/functional/import-export/csv-file-upload.spec.jsapps/web/src/tests/browser/app/functional/import-export/drag-drop-import.spec.jsapps/web/src/tests/browser/app/functional/import-export/set-grid-from-text.spec.jsapps/web/src/tests/browser/app/functional/import-export/set-text-from-grid.spec.jsapps/web/src/tests/browser/app/functional/test-data/basic-generation.spec.jsapps/web/src/tests/browser/app/functional/test-data/generation-mode-amend-selected.spec.jsapps/web/src/tests/browser/app/functional/test-data/generation-mode-amend-table.spec.jsapps/web/src/tests/browser/app/functional/test-data/generation-mode-new-table.spec.jsapps/web/src/tests/browser/app/functional/test-data/multiple-columns.spec.jsapps/web/src/tests/browser/app/functional/test-data/pairwise-generation.spec.jsapps/web/src/tests/browser/app/functional/test-data/refresh-text-preview.spec.jsapps/web/src/tests/browser/app/functional/test-data/schema-grid-row-controls.spec.jsapps/web/src/tests/browser/app/functional/test-data/text-schema-grid-sync.spec.jsapps/web/src/tests/browser/app/functional/test-data/text-schema.spec.jsapps/web/src/tests/browser/app/functional/ui-navigation/instructions-help.spec.jsapps/web/src/tests/browser/app/functional/ui-navigation/navigation-links.spec.jsapps/web/src/tests/browser/app/functional/ui-navigation/responsive-layout.spec.jsapps/web/src/tests/browser/app/playwright-smoke-tests/app-page-smoke.spec.jsapps/web/src/tests/browser/generator/abstractions/components/generator-generate-options.component.jsapps/web/src/tests/browser/generator/abstractions/components/generator-preview.component.jsapps/web/src/tests/browser/generator/abstractions/components/generator-schema.component.jsapps/web/src/tests/browser/generator/abstractions/generator.page.jsapps/web/src/tests/browser/generator/abstractions/helpers/scenario-helpers.jsapps/web/src/tests/browser/generator/functional/generate-data.spec.jsapps/web/src/tests/browser/generator/functional/generate-pairwise-data.spec.jsapps/web/src/tests/browser/generator/functional/preview-data.spec.jsapps/web/src/tests/browser/generator/functional/schema-edit.spec.jsapps/web/src/tests/browser/generator/playwright-smoke-tests/generator-page-smoke.spec.jsapps/web/src/tests/browser/planned-functional/column-operations/add-columns.spec.jsapps/web/src/tests/browser/planned-functional/column-operations/duplicate-column.spec.jsapps/web/src/tests/browser/planned-functional/column-operations/rename-column.spec.jsapps/web/src/tests/browser/shared/helpers/boolean-assertions.jsapps/web/src/tests/browser/shared/helpers/page-error-helpers.jspackages/core-ui/js/gui_components/data-grid-editor/ag-grid/gridExtension-ag-grid.jspackages/core-ui/js/gui_components/data-grid-editor/grid-engine.jspackages/core-ui/js/gui_components/data-grid-editor/tabulator/gridExtension-tabulator.jspackages/core-ui/js/gui_components/testdatadefn.jspackages/core-ui/js/gui_components/theme-toggle.jspackages/core-ui/src/tests/grid/tabulator-performance.benchmark.test.jspackages/core-ui/src/tests/utils/modal-text-input.test.jspackages/core/js/data_formats/test-framework-convertor.jspackages/core/js/data_generation/all-pairs/pairwiseTestDataGenerator.jspackages/core/js/data_generation/faker/fakerCommandRunner.jspackages/core/js/data_generation/faker/saferFakerCommandRunner.jspackages/core/js/data_generation/ruleResponse.jspackages/core/src/tests/data_generation/unit/domain/domain-datatype-exec.test.js
💤 Files with no reviewable changes (15)
- apps/web/src/tests/browser/app-coverage/grid-operations/grid-basic-operations.spec.js
- apps/web/src/tests/browser/planned-functional/column-operations/rename-column.spec.js
- apps/web/src/tests/browser/planned-functional/column-operations/duplicate-column.spec.js
- apps/web/src/tests/browser/app-coverage/column-operations/column-operations.spec.js
- apps/web/src/tests/browser/app-coverage/export-options/export-options.spec.js
- apps/web/src/tests/browser/planned-functional/column-operations/add-columns.spec.js
- apps/web/src/tests/browser/app-coverage/filtering-sorting/filtering-sorting.spec.js
- apps/web/src/tests/browser/app-coverage/export-formats/export-formats.spec.js
- apps/web/src/tests/browser/app-coverage/import-export/import-export-basic.spec.js
- packages/core-ui/src/tests/utils/modal-text-input.test.js
- apps/web/src/tests/browser/app-coverage/ui-navigation/responsive-layout.spec.js
- packages/core-ui/src/tests/grid/tabulator-performance.benchmark.test.js
- apps/web/src/tests/browser/app-coverage/ui-navigation/ui-navigation.spec.js
- apps/web/src/tests/browser/app-coverage/test-data/test-data-generation.spec.js
- apps/web/src/tests/browser/generator/playwright-smoke-tests/generator-page-smoke.spec.js
✅ Files skipped from review due to trivial changes (36)
- apps/web/src/tests/browser/app/functional/export-formats/other-formats.spec.js
- apps/web/src/tests/browser/app/functional/import-export/csv-download.spec.js
- apps/web/src/tests/browser/app/functional/error-handling/boundary-conditions.spec.js
- apps/web/src/tests/browser/app/functional/import-export/csv-file-upload.spec.js
- apps/web/src/tests/browser/app/functional/test-data/generation-mode-amend-table.spec.js
- apps/web/src/tests/browser/app/functional/grid-editor/row-multi-select-operations/multi-select-b-c-delete-leaves-a-d.spec.js
- apps/web/src/tests/browser/shared/helpers/page-error-helpers.js
- apps/web/src/tests/browser/app/functional/error-handling/browser-compatibility.spec.js
- apps/web/src/tests/browser/shared/helpers/boolean-assertions.js
- apps/web/src/tests/browser/app/functional/filtering-sorting/clear-filters.spec.js
- apps/web/src/tests/browser/app/abstraction-smoke-tests/grid-header-controls.spec.js
- apps/web/src/tests/browser/app/abstractions/components/grid-editor.component.js
- apps/web/src/tests/browser/app/functional/filtering-sorting/column-filter.spec.js
- apps/web/src/tests/browser/app/functional/export-options/csv-options-unquoted-safe-value.spec.js
- packages/core/js/data_formats/test-framework-convertor.js
- apps/web/src/tests/browser/app/functional/ui-navigation/navigation-links.spec.js
- apps/web/src/tests/browser/app/functional/test-data/generation-mode-amend-selected.spec.js
- apps/web/src/tests/browser/app/functional/grid-operations/reset-table.spec.js
- apps/web/src/tests/browser/app/functional/filtering-sorting/global-filter.spec.js
- apps/web/src/tests/browser/app/functional/ui-navigation/responsive-layout.spec.js
- packages/core-ui/js/gui_components/data-grid-editor/grid-engine.js
- apps/cli/src/tests/integration.cli-params.test.js
- apps/web/src/tests/browser/app/functional/export-options/preview-copy.spec.js
- apps/web/src/tests/browser/app/functional/grid-editor/row-multi-select-operations/add-multiple-rows-above.spec.js
- apps/cli/src/tests/integration.cli-output.test.js
- apps/web/src/tests/browser/app/functional/grid-editor/row-single-select-operations/add-single-row.spec.js
- apps/web/app.html
- apps/web/src/tests/browser/app/functional/grid-editor/row-multi-select-operations/clear-sort-before-add-rows-below.spec.js
- packages/core/js/data_generation/faker/saferFakerCommandRunner.js
- apps/web/src/tests/browser/app/functional/grid-editor/row-multi-select-operations/multi-select-range-delete-keeps-d.spec.js
- apps/web/src/tests/browser/app/functional/grid-editor/row-multi-select-operations/delete-selected-rows.spec.js
- packages/core-ui/js/gui_components/theme-toggle.js
- apps/web/src/tests/browser/app/functional/filtering-sorting/column-sorting.spec.js
- apps/cli/src/run-cli.js
- apps/web/src/tests/browser/app/functional/import-export/set-grid-from-text.spec.js
- packages/core/js/data_generation/faker/fakerCommandRunner.js
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/core-ui/js/gui_components/testdatadefn.js
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@packages/core/src/tests/data_generation/unit/domain/domain-commerce-exec.test.js`:
- Line 21: Update the debug log in the commerce.price unit test: locate the
console.log call in
packages/core/src/tests/data_generation/unit/domain/domain-commerce-exec.test.js
that currently prints 'commerce.product' (inside the commerce.price test) and
change the logged label to 'commerce.price' (or remove the log if unnecessary)
so the output correctly reflects the test under test and makes failures easier
to triage.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-finance-exec.test.js`:
- Around line 118-121: The test "executes finance.litecoinAddress" is printing
the wrong label; update the console.log in that test so it logs a correct,
descriptive label (e.g., 'finance.litecoinAddress') instead of 'finance.iban'.
Locate the test function named "executes finance.litecoinAddress" and the call
to executeDomainKeyword('finance.litecoinAddress', { faker, args: [] }) and
change the console.log argument to reflect finance.litecoinAddress for accurate
debug output.
In
`@packages/core/src/tests/data_generation/unit/domain/domain-location-exec.test.js`:
- Around line 160-164: The timezone test in the 'executes location.timeZone'
unit test uses a regex that only allows letters and underscores and thus rejects
valid timezone tokens containing digits or '+'/'-'; update the assertion in the
test that calls executeDomainKeyword('location.timeZone', ...) to use a looser
regex that permits digits and plus/minus (for example allow [A-Za-z0-9_+\-] in
each token) while keeping the overall structure of slash-separated tokens (e.g.,
^[A-Za-z0-9_+\-]+(?:\/[A-Za-z0-9_+\-]+){1,2}$) so legitimate timezones no longer
produce false negatives.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: f024bc84-aa90-44b5-96b2-0c888d0d4e47
📒 Files selected for processing (47)
apps/web/src/tests/browser/app/abstractions/app.page.jsdocs-src/docs/040-test-data/domain/020-airline.mddocs-src/docs/040-test-data/domain/050-color.mddocs-src/docs/040-test-data/domain/090-datatype.mddocs-src/docs/040-test-data/domain/100-date.mddocs-src/docs/040-test-data/domain/110-finance.mddocs-src/docs/040-test-data/domain/140-hacker.mddocs-src/docs/040-test-data/domain/160-internet.mddocs-src/docs/040-test-data/domain/170-literal.mddocs-src/docs/040-test-data/domain/180-location.mddocs-src/docs/040-test-data/domain/190-lorem.mddocs-src/docs/040-test-data/domain/210-number.mddocs-src/docs/040-test-data/domain/220-person.mddocs-src/docs/040-test-data/domain/240-science.mddocs-src/docs/040-test-data/domain/250-string.mddocs-src/docs/040-test-data/domain/260-system.mddocs-src/docs/040-test-data/domain/270-vehicle.mddocs-src/docs/040-test-data/domain/280-word.mdpackages/core/js/domain/domain-keyword-definitions.jspackages/core/src/tests/data_generation/unit/domain/domain-airline-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-animal-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-assertions.test-helper.jspackages/core/src/tests/data_generation/unit/domain/domain-book-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-color-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-commerce-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-company-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-database-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-date-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-finance-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-food-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-git-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-hacker-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-image-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-internet-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-location-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-lorem-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-music-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-number-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-param-invocation-coverage.test-helper.jspackages/core/src/tests/data_generation/unit/domain/domain-person-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-phone-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-science-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-string-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-system-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-vehicle-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-word-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domainKeywords.test.js
✅ Files skipped from review due to trivial changes (9)
- packages/core/src/tests/data_generation/unit/domain/domain-assertions.test-helper.js
- docs-src/docs/040-test-data/domain/170-literal.md
- docs-src/docs/040-test-data/domain/240-science.md
- docs-src/docs/040-test-data/domain/260-system.md
- docs-src/docs/040-test-data/domain/140-hacker.md
- docs-src/docs/040-test-data/domain/050-color.md
- docs-src/docs/040-test-data/domain/100-date.md
- docs-src/docs/040-test-data/domain/180-location.md
- docs-src/docs/040-test-data/domain/270-vehicle.md
🚧 Files skipped from review as they are similar to previous changes (17)
- packages/core/src/tests/data_generation/unit/domain/domain-database-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-vehicle-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-git-exec.test.js
- docs-src/docs/040-test-data/domain/210-number.md
- packages/core/src/tests/data_generation/unit/domain/domain-phone-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-science-exec.test.js
- docs-src/docs/040-test-data/domain/020-airline.md
- packages/core/src/tests/data_generation/unit/domain/domain-color-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-book-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-image-exec.test.js
- apps/web/src/tests/browser/app/abstractions/app.page.js
- packages/core/src/tests/data_generation/unit/domain/domain-number-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-internet-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-company-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-word-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-system-exec.test.js
- packages/core/src/tests/data_generation/unit/domain/domain-animal-exec.test.js
closes #45
closes #118
Summary by CodeRabbit
New Features
Documentation
Improvements
Tests