Upgrade faker to 10.4.0#227
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (9)
✅ Files skipped from review due to trivial changes (2)
🚧 Files skipped from review as they are similar to previous changes (5)
📝 WalkthroughWalkthroughUpgrades ChangesFaker v10.4.0 Upgrade & Command Governance
Sequence Diagram(s)sequenceDiagram
participant User
participant validateForbidden as validateForbiddenFakerRules
participant validateSafe as validateSafeFakerRules
participant isForbidden as isForbiddenFakerCommand
participant allowedSet as getAllowedFakerCommandsAlphabetical
participant Result
rect rgba(255, 100, 100, 0.5)
note over User,Result: Forbidden command path (any mode)
User->>validateForbidden: textSpec with helpers.objectKey
validateForbidden->>isForbidden: check helpers.objectKey
isForbidden-->>validateForbidden: true
validateForbidden-->>Result: error unsafe_faker_rule
end
rect rgba(100, 180, 255, 0.5)
note over User,Result: Safe-mode allowed command path
User->>validateSafe: command commerce.upc (safeFakerRules=true)
validateSafe->>isForbidden: check commerce.upc
isForbidden-->>validateSafe: false
validateSafe->>allowedSet: get allowed commands
allowedSet-->>validateSafe: [...commands]
validateSafe-->>Result: valid/error
end
rect rgba(100, 220, 100, 0.5)
note over User,Result: Non-safe execution path
User->>User: runFakerCommand(commerce.upc)
User->>isForbidden: check commerce.upc
isForbidden-->>User: false (allowed)
User-->>Result: execute normally
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
packages/core-ui/src/tests/interaction/matrix/ui-scenario-parity-support.test.jsOops! Something went wrong! :( ESLint: 10.4.1 A config object is using the "root" key, which is not supported in flat config system. Flat configs always act as if they are the root config file, so this key can be safely removed. packages/core-ui/src/tests/utils/faker-command-help-metadata.test.jsOops! Something went wrong! :( ESLint: 10.4.1 A config object is using the "root" key, which is not supported in flat config system. Flat configs always act as if they are the root config file, so this key can be safely removed. packages/core/js/domain/domain-faker-string-keyword-definitions.jsOops! Something went wrong! :( ESLint: 10.4.1 A config object is using the "root" key, which is not supported in flat config system. Flat configs always act as if they are the root config file, so this key can be safely removed.
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Upgrades the repo’s Faker integration to @faker-js/faker@10.4.0, aligning the curated command catalog, safe-mode validation, UI pickers, and generated fixtures/docs with Faker v10 runtime behavior (including separating “known” vs “allowed” commands).
Changes:
- Bumps Faker to
10.4.0, updates curated command lists/metadata, and removes v10-removed commands while addingcommerce.upc. - Introduces a “forbidden helper commands” concept: keep them known internally but reject them in safe-mode and schema/API surfaces.
- Regenerates interaction-matrix fixtures and refreshes domain docs/examples to match the updated supported command set.
Reviewed changes
Copilot reviewed 34 out of 35 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| scripts/generate-schema-interaction-matrix.mjs | Removes special-casing for ipv4/ipv6 now that they’re executable with the updated parser/runtime. |
| pnpm-lock.yaml | Updates locked Faker version and its resolved package metadata. |
| packages/core/src/tests/data_generation/unit/faker/fakerCommand.test.js | Adds regression coverage for parsing/executing internet.ipv4/internet.ipv6; updates an error-message assertion. |
| packages/core/src/tests/data_generation/unit/domain/domain-keyword-params-usage.test.js | Adds a sample value for the new commerce.upc(prefix=...) argument. |
| packages/core/src/tests/data_generation/unit/domain/domain-internet-exec.test.js | Removes execution tests for Faker v10-removed internet commands. |
| packages/core/src/tests/data_generation/unit/domain/domain-image-exec.test.js | Removes execution tests for Faker v10-removed image commands. |
| packages/core/src/tests/data_generation/unit/domain/domain-finance-exec.test.js | Removes execution tests for Faker v10-removed finance command. |
| packages/core/src/tests/core-api/generateFromTextSpec.test.js | Adds safe-mode test to ensure forbidden faker commands are rejected. |
| packages/core/src/index.js | Splits “allowed” vs “forbidden” faker commands for safe-mode validation and improves error specificity. |
| packages/core/package.json | Bumps core package dependency on @faker-js/faker to 10.4.0. |
| packages/core/js/faker/faker-helper-keyword-definitions.js | Adds helper keyword definitions for newly recognized helper APIs. |
| packages/core/js/faker/faker-commands.js | Updates curated command list for v10.4.0; adds forbidden list + allowed filtering helpers. |
| packages/core/js/faker/faker-command-help-metadata.js | Regenerates auto-derived help metadata to match Faker 10.4.0. |
| packages/core/js/domain/domain-faker-internet-keyword-definitions.js | Removes internet keywords that no longer exist in Faker v10. |
| packages/core/js/domain/domain-faker-image-keyword-definitions.js | Removes image keywords that no longer exist in Faker v10. |
| packages/core/js/domain/domain-faker-finance-keyword-definitions.js | Removes finance keyword that no longer exists in Faker v10. |
| packages/core/js/domain/domain-faker-commerce-keyword-definitions.js | Adds commerce.upc domain keyword + help/arg mapping. |
| packages/core/js/data_generation/faker/fakerCommand.js | Fixes parser to allow digits in method segments (e.g., ipv4, ipv6). |
| packages/core-ui/src/tests/utils/faker-command-help-metadata.test.js | Updates expectations for widened sex type union in Faker v10 typings. |
| packages/core-ui/src/tests/shared/schema-row-validation.test.js | Adds test asserting forbidden faker commands are reported as “known but not allowed”. |
| packages/core-ui/src/tests/interaction/matrix/support/schema-interaction-scenario-builder.js | Uses allowed faker commands for matrix generation; updates scenario rules/fixtures generation logic. |
| packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.json | Regenerated interaction-matrix fixture reflecting updated command surface. |
| packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix-summary.md | Regenerated interaction-matrix human-readable summary. |
| packages/core-ui/src/tests/grid/schema/test-data-command-catalog.test.js | Ensures forbidden commands do not appear in catalogs/picker-backed values. |
| packages/core-ui/js/gui_components/shared/test-data/schema/schema-row-validation.js | Adds forbidden-command detection for faker schema rows. |
| packages/core-ui/js/gui_components/shared/faker-commands.js | Re-exports new forbidden/allowed faker command helpers from core. |
| packages/core-ui/js/gui_components/app/test-data-grid/schema/test-data-command-catalog.js | Switches picker/catalog to “allowed” faker commands only. |
| packages/core-ui/js/gui_components/app/test-data-grid/controller/test-data-grid-controller.js | Switches faker import from CDN to package dependency. |
| package.json | Bumps dev dependency to @faker-js/faker@10.4.0 and removes CDN moduleNameMapper entry. |
| jest.config.cjs | Removes Jest moduleNameMapper for the old Faker CDN import. |
| docs/faker-10.4.0-comparison-report.md | Adds one-off upgrade comparison report documenting removals/additions and metadata shifts. |
| docs-src/docs/040-test-data/domain/170-internet.md | Removes docs for v10-removed internet methods. |
| docs-src/docs/040-test-data/domain/160-image.md | Removes docs for v10-removed image methods. |
| docs-src/docs/040-test-data/domain/120-finance.md | Removes docs for v10-removed finance method. |
| docs-src/docs/040-test-data/domain/070-commerce.md | Documents new commerce.upc domain method and examples. |
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
Greptile SummaryThis PR upgrades
Confidence Score: 5/5Safe to merge — the forbidden-command enforcement is consistent across all three layers (text-spec validator, schema row validator, runtime runner), the regex fix is surgical and well-tested, and no existing allowed commands are broken. The changes are well-scoped: deprecated Faker v10 methods are cleanly removed, the new FORBIDDEN_FAKER_COMMANDS distinction is enforced at every validation and execution boundary, and the string.uuid upgrade with cross-arg validation is covered by targeted tests. The ipv4/ipv6 regex fix is accompanied by explicit round-trip tests confirming parse, compile, validate, and execute all succeed. No files require special attention. The most complex logic is in domain-keywords.js (normaliseStringUuidOptions) and index.js (validateForbiddenFakerRules), both of which have dedicated test coverage. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[User submits textSpec / schema row] --> B{Contains a Faker command?}
B -- No --> Z[Proceed normally]
B -- Yes --> C[validateForbiddenFakerRules]
C -- Forbidden command\ne.g. helpers.objectKey --> D[Error: unsafe_faker_rule]
C -- OK --> E{Safe mode enabled?}
E -- Yes --> F[validateSafeFakerRules]
F -- Forbidden or unknown command --> G[Error: safe mode violation]
F -- Known + safe args --> H[compileGenerationState]
E -- No --> H
H --> I[runFakerCommand]
I --> J{isForbiddenFakerCommand?}
J -- Yes --> K[errorResponse: Forbidden faker command]
J -- No --> L{Command has digits?\ne.g. ipv4/ipv6}
L -- Yes, regex fixed --> M[Parse and compile via FakerCommand]
L -- No --> M
M --> N[Execute Faker]
N --> O[Return generated data]
subgraph Schema UI Layer
P[schema-row-validation.js]
P --> Q{In KNOWN_FAKER_COMMANDS?}
Q -- No --> R[unknown_faker_command issue]
Q -- Yes --> S{isForbiddenFakerCommand?}
S -- Yes --> T[forbidden_faker_command issue]
S -- No --> U[Valid command]
end
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A[User submits textSpec / schema row] --> B{Contains a Faker command?}
B -- No --> Z[Proceed normally]
B -- Yes --> C[validateForbiddenFakerRules]
C -- Forbidden command\ne.g. helpers.objectKey --> D[Error: unsafe_faker_rule]
C -- OK --> E{Safe mode enabled?}
E -- Yes --> F[validateSafeFakerRules]
F -- Forbidden or unknown command --> G[Error: safe mode violation]
F -- Known + safe args --> H[compileGenerationState]
E -- No --> H
H --> I[runFakerCommand]
I --> J{isForbiddenFakerCommand?}
J -- Yes --> K[errorResponse: Forbidden faker command]
J -- No --> L{Command has digits?\ne.g. ipv4/ipv6}
L -- Yes, regex fixed --> M[Parse and compile via FakerCommand]
L -- No --> M
M --> N[Execute Faker]
N --> O[Return generated data]
subgraph Schema UI Layer
P[schema-row-validation.js]
P --> Q{In KNOWN_FAKER_COMMANDS?}
Q -- No --> R[unknown_faker_command issue]
Q -- Yes --> S{isForbiddenFakerCommand?}
S -- Yes --> T[forbidden_faker_command issue]
S -- No --> U[Valid command]
end
Reviews (4): Last reviewed commit: "Tighten uuid domain wrapper behavior" | Re-trigger Greptile |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9c927dde11
ℹ️ 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: 3
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/src/tests/interaction/matrix/fixtures/schema-interaction-matrix-summary.md (1)
13-38:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winRecompute the origin totals.
The origin breakdown doesn’t match the stated scenario count here: the listed values add up to 645, not 642. The same +3 drift repeats in the runtime/UI sections below, so this looks stale. Please regenerate the summary instead of hand-editing the counts.
🤖 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/interaction/matrix/fixtures/schema-interaction-matrix-summary.md` around lines 13 - 38, The origin breakdown counts in the "By Origin" section of schema-interaction-matrix-summary.md (showing arg, base, custom, empty, example, pair, pairwise) currently sum to 645, but the stated scenario count is 642, indicating a stale hand-edited discrepancy of +3. Regenerate the entire schema-interaction-matrix-summary.md file by recomputing all the totals programmatically rather than maintaining manually edited values, ensuring all sections (By Origin, By Source Type, and any runtime/UI sections) reflect the accurate scenario counts.
🤖 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/faker-10.4.0-comparison-report.md`:
- Around line 161-179: Remove or mark as complete the ipv4/ipv6 parser
constraint item in the "Recommended sequence for issue `#225`" section since the
report already indicates this fix is complete in the current worktree. Either
delete item `#5` from the "Recommended sequence" list that mentions fixing the
ipv4/ipv6 parser constraint in FakerCommand, or revise it to clarify that this
item is already resolved rather than listed as an optional pending task, to
eliminate the contradiction between the sequence and the report's actual status.
In
`@packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.json`:
- Around line 15844-16432: The fixture file contains duplicate scenario IDs that
violate uniqueness constraints. Identify and remove or rename all duplicate ID
entries (such as domain-autoIncrement-timestamp-base, domain-commerce-upc-base,
and domain-datatype-enum-arg-values which appear multiple times). Ensure each
scenario object has a unique id field throughout the entire JSON file. If these
duplicates are generated automatically, also check and fix the generation script
to prevent future duplicates.
In `@packages/core/js/faker/faker-command-help-metadata.js`:
- Around line 646-658: In the metadata object for the 'string.uuid' method, the
options parameter is incorrectly marked with optional: false when it should be
optional: true, since the Faker API allows calling the method without arguments.
Locate the options parameter object within the params array for 'string.uuid'
and change the optional property from false to true to accurately reflect that
the parameter is optional.
---
Outside diff comments:
In
`@packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix-summary.md`:
- Around line 13-38: The origin breakdown counts in the "By Origin" section of
schema-interaction-matrix-summary.md (showing arg, base, custom, empty, example,
pair, pairwise) currently sum to 645, but the stated scenario count is 642,
indicating a stale hand-edited discrepancy of +3. Regenerate the entire
schema-interaction-matrix-summary.md file by recomputing all the totals
programmatically rather than maintaining manually edited values, ensuring all
sections (By Origin, By Source Type, and any runtime/UI sections) reflect the
accurate scenario counts.
🪄 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: 86d300f0-38e1-4950-8972-fdff12ecaa1c
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (34)
docs-src/docs/040-test-data/domain/070-commerce.mddocs-src/docs/040-test-data/domain/120-finance.mddocs-src/docs/040-test-data/domain/160-image.mddocs-src/docs/040-test-data/domain/170-internet.mddocs/faker-10.4.0-comparison-report.mdjest.config.cjspackage.jsonpackages/core-ui/js/gui_components/app/test-data-grid/controller/test-data-grid-controller.jspackages/core-ui/js/gui_components/app/test-data-grid/schema/test-data-command-catalog.jspackages/core-ui/js/gui_components/shared/faker-commands.jspackages/core-ui/js/gui_components/shared/test-data/schema/schema-row-validation.jspackages/core-ui/src/tests/grid/schema/test-data-command-catalog.test.jspackages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix-summary.mdpackages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.jsonpackages/core-ui/src/tests/interaction/matrix/support/schema-interaction-scenario-builder.jspackages/core-ui/src/tests/shared/schema-row-validation.test.jspackages/core-ui/src/tests/utils/faker-command-help-metadata.test.jspackages/core/js/data_generation/faker/fakerCommand.jspackages/core/js/domain/domain-faker-commerce-keyword-definitions.jspackages/core/js/domain/domain-faker-finance-keyword-definitions.jspackages/core/js/domain/domain-faker-image-keyword-definitions.jspackages/core/js/domain/domain-faker-internet-keyword-definitions.jspackages/core/js/faker/faker-command-help-metadata.jspackages/core/js/faker/faker-commands.jspackages/core/js/faker/faker-helper-keyword-definitions.jspackages/core/package.jsonpackages/core/src/index.jspackages/core/src/tests/core-api/generateFromTextSpec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-finance-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/faker/fakerCommand.test.jsscripts/generate-schema-interaction-matrix.mjs
💤 Files with no reviewable changes (11)
- scripts/generate-schema-interaction-matrix.mjs
- docs-src/docs/040-test-data/domain/160-image.md
- packages/core/js/domain/domain-faker-image-keyword-definitions.js
- docs-src/docs/040-test-data/domain/170-internet.md
- docs-src/docs/040-test-data/domain/120-finance.md
- packages/core/src/tests/data_generation/unit/domain/domain-finance-exec.test.js
- jest.config.cjs
- packages/core/src/tests/data_generation/unit/domain/domain-internet-exec.test.js
- packages/core/js/domain/domain-faker-finance-keyword-definitions.js
- packages/core/js/domain/domain-faker-internet-keyword-definitions.js
- packages/core/src/tests/data_generation/unit/domain/domain-image-exec.test.js
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "animal.type", | ||
| "params": "()", | ||
| "command": "animal.type", | ||
| "params": "()", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nanimal.type()", | ||
| "expectedUiSchemaText": "Value\nanimal.type()", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": [], | ||
| "origins": ["base"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-base", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(1, 5, \"filename\", \".txt\", 3)", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(1, 5, \"filename\", \".txt\", 3)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(1, 5, \"filename\", \".txt\", 3)", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": [], | ||
| "origins": ["base"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-example-1", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence example 1", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "()", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence()", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence()", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["start", "step", "prefix", "suffix", "zeropadding"], | ||
| "origins": ["example"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-example-2", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence example 2", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(start=10, step=5)", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(start=10, step=5)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(start=10, step=5)", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["start", "step", "prefix", "suffix", "zeropadding"], | ||
| "origins": ["example"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-example-3", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence example 3", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(start=1, step=5, prefix=\"filename\", suffix=\".txt\", zeropadding=3)", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(start=1, step=5, prefix=\"filename\", suffix=\".txt\", zeropadding=3)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(start=1, step=5, prefix=\"filename\", suffix=\".txt\", zeropadding=3)", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["start", "step", "prefix", "suffix", "zeropadding"], | ||
| "origins": ["example"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-arg-start", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence arg start", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(start=10)", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(start=10)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(start=10)", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["start"], | ||
| "origins": ["arg"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-arg-step", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence arg step", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(step=5)", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(step=5)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(step=5)", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["step"], | ||
| "origins": ["arg"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-arg-prefix", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence arg prefix", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(prefix=\"filename\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(prefix=\"filename\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(prefix=\"filename\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["prefix"], | ||
| "origins": ["arg"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-arg-suffix", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence arg suffix", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(suffix=\".txt\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(suffix=\".txt\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(suffix=\".txt\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["suffix"], | ||
| "origins": ["arg"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-arg-zeropadding", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence arg zeropadding", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(zeropadding=3)", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(zeropadding=3)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(zeropadding=3)", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["zeropadding"], | ||
| "origins": ["arg"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-pair-start-step", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence pair start/step", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(start=10, step=5)", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(start=10, step=5)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(start=10, step=5)", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["start", "step"], | ||
| "origins": ["pair"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-pair-step-prefix", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence pair step/prefix", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(step=5, prefix=\"filename\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(step=5, prefix=\"filename\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(step=5, prefix=\"filename\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["step", "prefix"], | ||
| "origins": ["pair"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-pair-prefix-suffix", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence pair prefix/suffix", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(prefix=\"filename\", suffix=\".txt\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(prefix=\"filename\", suffix=\".txt\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(prefix=\"filename\", suffix=\".txt\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["prefix", "suffix"], | ||
| "origins": ["pair"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-pair-suffix-zeropadding", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence pair suffix/zeropadding", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(suffix=\".txt\", zeropadding=3)", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nanimal.type()", | ||
| "expectedUiSchemaText": "Value\nanimal.type()", | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(suffix=\".txt\", zeropadding=3)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(suffix=\".txt\", zeropadding=3)", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": [], | ||
| "origins": ["base"] | ||
| "coveredArgs": ["suffix", "zeropadding"], | ||
| "origins": ["pair"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-base", | ||
| "id": "domain-autoIncrement-timestamp-base", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(1, 5, \"filename\", \".txt\", 3)", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "()", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(1, 5, \"filename\", \".txt\", 3)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(1, 5, \"filename\", \".txt\", 3)", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp()", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp()", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": [], | ||
| "origins": ["base"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-example-1", | ||
| "id": "domain-autoIncrement-timestamp-example-1", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence example 1", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp example 1", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "()", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence()", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence()", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp()", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp()", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["start", "step", "prefix", "suffix", "zeropadding"], | ||
| "coveredArgs": ["start", "step", "type", "outputFormat", "inputFormat"], | ||
| "origins": ["example"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-example-2", | ||
| "id": "domain-autoIncrement-timestamp-example-2", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence example 2", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp example 2", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(start=10, step=5)", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "(start=\"20/03/1969\", step=1, type=\"days\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(start=10, step=5)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(start=10, step=5)", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp(start=\"20/03/1969\", step=1, type=\"days\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp(start=\"20/03/1969\", step=1, type=\"days\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["start", "step", "prefix", "suffix", "zeropadding"], | ||
| "coveredArgs": ["start", "step", "type", "outputFormat", "inputFormat"], | ||
| "origins": ["example"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-example-3", | ||
| "id": "domain-autoIncrement-timestamp-example-3", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence example 3", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp example 3", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(start=1, step=5, prefix=\"filename\", suffix=\".txt\", zeropadding=3)", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "(start=\"2026-06-12 12:39:23\", step=15, type=\"minutes\", outputFormat=\"yyyy-MM-dd HH:mm:ss\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(start=1, step=5, prefix=\"filename\", suffix=\".txt\", zeropadding=3)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(start=1, step=5, prefix=\"filename\", suffix=\".txt\", zeropadding=3)", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp(start=\"2026-06-12 12:39:23\", step=15, type=\"minutes\", outputFormat=\"yyyy-MM-dd HH:mm:ss\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp(start=\"2026-06-12 12:39:23\", step=15, type=\"minutes\", outputFormat=\"yyyy-MM-dd HH:mm:ss\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["start", "step", "prefix", "suffix", "zeropadding"], | ||
| "coveredArgs": ["start", "step", "type", "outputFormat", "inputFormat"], | ||
| "origins": ["example"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-arg-start", | ||
| "id": "domain-autoIncrement-timestamp-arg-start", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence arg start", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp arg start", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(start=10)", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "(start=\"2026-06-12T12:39:23Z\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(start=10)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(start=10)", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp(start=\"2026-06-12T12:39:23Z\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp(start=\"2026-06-12T12:39:23Z\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["start"], | ||
| "origins": ["arg"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-arg-step", | ||
| "id": "domain-autoIncrement-timestamp-arg-step", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence arg step", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp arg step", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(step=5)", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "(step=1)", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(step=5)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(step=5)", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp(step=1)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp(step=1)", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["step"], | ||
| "origins": ["arg"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-arg-prefix", | ||
| "id": "domain-autoIncrement-timestamp-arg-type", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence arg prefix", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp arg type", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(prefix=\"filename\")", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "(type=\"seconds\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(prefix=\"filename\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(prefix=\"filename\")", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp(type=\"seconds\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp(type=\"seconds\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["prefix"], | ||
| "coveredArgs": ["type"], | ||
| "origins": ["arg"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-arg-suffix", | ||
| "id": "domain-autoIncrement-timestamp-arg-outputFormat", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence arg suffix", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp arg outputFormat", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(suffix=\".txt\")", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "(outputFormat=\"iso8601\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(suffix=\".txt\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(suffix=\".txt\")", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp(outputFormat=\"iso8601\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp(outputFormat=\"iso8601\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["suffix"], | ||
| "coveredArgs": ["outputFormat"], | ||
| "origins": ["arg"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-arg-zeropadding", | ||
| "id": "domain-autoIncrement-timestamp-arg-inputFormat", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence arg zeropadding", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp arg inputFormat", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(zeropadding=3)", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "(inputFormat=\"dd/MM/yyyy\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(zeropadding=3)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(zeropadding=3)", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp(inputFormat=\"dd/MM/yyyy\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp(inputFormat=\"dd/MM/yyyy\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["zeropadding"], | ||
| "coveredArgs": ["inputFormat"], | ||
| "origins": ["arg"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-pair-start-step", | ||
| "id": "domain-autoIncrement-timestamp-pair-start-step", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence pair start/step", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp pair start/step", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(start=10, step=5)", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "(start=\"2026-06-12T12:39:23Z\", step=1)", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(start=10, step=5)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(start=10, step=5)", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp(start=\"2026-06-12T12:39:23Z\", step=1)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp(start=\"2026-06-12T12:39:23Z\", step=1)", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["start", "step"], | ||
| "origins": ["pair"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-pair-step-prefix", | ||
| "id": "domain-autoIncrement-timestamp-pair-step-type", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence pair step/prefix", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp pair step/type", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(step=5, prefix=\"filename\")", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "(step=1, type=\"seconds\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(step=5, prefix=\"filename\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(step=5, prefix=\"filename\")", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp(step=1, type=\"seconds\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp(step=1, type=\"seconds\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["step", "prefix"], | ||
| "coveredArgs": ["step", "type"], | ||
| "origins": ["pair"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-pair-prefix-suffix", | ||
| "id": "domain-autoIncrement-timestamp-pair-type-outputFormat", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence pair prefix/suffix", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp pair type/outputFormat", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(prefix=\"filename\", suffix=\".txt\")", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "(type=\"seconds\", outputFormat=\"iso8601\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(prefix=\"filename\", suffix=\".txt\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(prefix=\"filename\", suffix=\".txt\")", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp(type=\"seconds\", outputFormat=\"iso8601\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp(type=\"seconds\", outputFormat=\"iso8601\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["prefix", "suffix"], | ||
| "coveredArgs": ["type", "outputFormat"], | ||
| "origins": ["pair"] | ||
| }, | ||
| { | ||
| "id": "domain-autoIncrement-sequence-pair-suffix-zeropadding", | ||
| "id": "domain-autoIncrement-timestamp-pair-outputFormat-inputFormat", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "label": "autoIncrement.sequence pair suffix/zeropadding", | ||
| "command": "autoIncrement.timestamp", | ||
| "label": "autoIncrement.timestamp pair outputFormat/inputFormat", | ||
| "rows": [ | ||
| { | ||
| "name": "Value", | ||
| "sourceType": "domain", | ||
| "command": "autoIncrement.sequence", | ||
| "params": "(suffix=\".txt\", zeropadding=3)", | ||
| "command": "autoIncrement.timestamp", | ||
| "params": "(outputFormat=\"iso8601\", inputFormat=\"dd/MM/yyyy\")", | ||
| "value": "" | ||
| } | ||
| ], | ||
| "expectedSchemaText": "Value\nautoIncrement.sequence(suffix=\".txt\", zeropadding=3)", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.sequence(suffix=\".txt\", zeropadding=3)", | ||
| "expectedSchemaText": "Value\nautoIncrement.timestamp(outputFormat=\"iso8601\", inputFormat=\"dd/MM/yyyy\")", | ||
| "expectedUiSchemaText": "Value\nautoIncrement.timestamp(outputFormat=\"iso8601\", inputFormat=\"dd/MM/yyyy\")", | ||
| "expectedFileExtension": ".csv", | ||
| "pairwiseEligible": false, | ||
| "expectStructuredSerialization": false, | ||
| "coveredArgs": ["suffix", "zeropadding"], | ||
| "coveredArgs": ["outputFormat", "inputFormat"], | ||
| "origins": ["pair"] | ||
| }, | ||
| { |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check for duplicate scenario IDs in the fixture file
echo "=== Checking for duplicate scenario IDs ==="
rg -o '"id": "[^"]+"' packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.json | sort | uniq -d | head -20
echo ""
echo "=== Count of each duplicate ID ==="
rg -o '"id": "[^"]+"' packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.json | sort | uniq -c | sort -rn | head -20Repository: eviltester/grid-table-editor
Length of output: 1750
🏁 Script executed:
#!/bin/bash
# Verify the specific IDs mentioned in the review comment
echo "=== Searching for domain-autoIncrement-timestamp-base ==="
rg -n '"id": "domain-autoIncrement-timestamp-base"' packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.json
echo ""
echo "=== Searching for domain-commerce-upc-base ==="
rg -n '"id": "domain-commerce-upc-base"' packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.json
echo ""
echo "=== Searching for domain-datatype-enum-arg-values ==="
rg -n '"id": "domain-datatype-enum-arg-values"' packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.jsonRepository: eviltester/grid-table-editor
Length of output: 542
🏁 Script executed:
#!/bin/bash
# Verify total count of each ID to ensure we have found all occurrences
echo "=== Total count for domain-autoIncrement-timestamp-base ==="
rg -c '"id": "domain-autoIncrement-timestamp-base"' packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.json
echo ""
echo "=== Total count for domain-commerce-upc-base ==="
rg -c '"id": "domain-commerce-upc-base"' packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.json
echo ""
echo "=== Total count for domain-datatype-enum-arg-values ==="
rg -c '"id": "domain-datatype-enum-arg-values"' packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.json
echo ""
echo "=== Check if file structure suggests intentional duplication ==="
# Look for patterns in the file to understand structure
echo "First 50 lines around first domain-autoIncrement-timestamp-base occurrence:"
sed -n '2240,2260p' packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.json
echo ""
echo "First 50 lines around second domain-autoIncrement-timestamp-base occurrence:"
sed -n '16130,16160p' packages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.jsonRepository: eviltester/grid-table-editor
Length of output: 2287
Remove or deduplicate scenario IDs to ensure uniqueness in the fixture file.
The fixture file contains duplicate scenario IDs that appear in pairs:
domain-autoIncrement-timestamp-baseat lines 2256 and 16147domain-commerce-upc-baseat lines 3422 and 17313domain-datatype-enum-arg-valuesat lines 3840 and 17731
If IDs serve as unique identifiers (as is typical in test fixtures), these duplicates could cause test collisions or unexpected behavior. Confirm whether duplication is intentional and required for different test contexts, or if this is a generation script issue that needs fixing.
🤖 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/interaction/matrix/fixtures/schema-interaction-matrix.json`
around lines 15844 - 16432, The fixture file contains duplicate scenario IDs
that violate uniqueness constraints. Identify and remove or rename all duplicate
ID entries (such as domain-autoIncrement-timestamp-base,
domain-commerce-upc-base, and domain-datatype-enum-arg-values which appear
multiple times). Ensure each scenario object has a unique id field throughout
the entire JSON file. If these duplicates are generated automatically, also
check and fix the generation script to prevent future duplicates.
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-ui/src/tests/interaction/matrix/ui-scenario-parity-support.test.js`:
- Around line 30-35: The findScenarioByLogicalId function calls for
literalScenario, regexScenario, and mustacheScenario may return undefined
values, but these variables are later dereferenced to access their .id
properties (at lines 37, 43, and 49), which would cause a TypeError with poor
diagnostics. Add explicit toBeDefined() assertions immediately after each of the
three findScenarioByLogicalId calls to validate that the scenarios are defined
before they are used, providing better error messages if any lookup fails.
In `@packages/core/js/faker/faker-command-help-metadata.js`:
- Around line 420-423: The example value for the rangeToNumber helper in the
metadata object uses an unnecessarily long 16-digit number (5248677481580853)
that can trigger false positives in security scanners. Replace the example field
value with a shorter, simpler numeric example that aligns with the documentation
examples already shown, such as a single digit or small integer value similar to
what is used in the examples array.
- Around line 648-666: The params array in the string.uuid metadata object
currently defines version and refDate as separate positional parameters, but the
actual Faker 10.4.0 API accepts these as properties within a single optional
options parameter object. Replace the two separate param objects (name:
'version' and name: 'refDate') with a single param object named options that has
type representing an object with optional version and refDate properties, and
update the description to reflect that this is an options object.
🪄 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: fa139bbb-6ce6-45c1-8257-cee9c1f73697
📒 Files selected for processing (30)
docs-src/docs/040-test-data/domain/000-domain-test-data.mddocs-src/docs/040-test-data/domain/040-autoIncrement.mddocs-src/docs/040-test-data/domain/070-commerce.mddocs-src/docs/040-test-data/domain/260-string.mddocs/faker-10.4.0-comparison-report.mddocs/faker-options-param-report.mdpackages/core-ui/src/tests/interaction/matrix/app-schema-interaction-matrix.test.jspackages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix-summary.mdpackages/core-ui/src/tests/interaction/matrix/fixtures/schema-interaction-matrix.jsonpackages/core-ui/src/tests/interaction/matrix/fixtures/ui-scenario-parity.jsonpackages/core-ui/src/tests/interaction/matrix/generator-schema-interaction-matrix.test.jspackages/core-ui/src/tests/interaction/matrix/schema-interaction-matrix-report.test.jspackages/core-ui/src/tests/interaction/matrix/support/scenario-fixture-identity.jspackages/core-ui/src/tests/interaction/matrix/support/schema-interaction-matrix-report.jspackages/core-ui/src/tests/interaction/matrix/support/schema-interaction-scenario-builder.jspackages/core-ui/src/tests/interaction/matrix/ui-scenario-parity-support.test.jspackages/core-ui/src/tests/utils/faker-command-help-metadata.test.jspackages/core/js/data_generation/faker/fakerCommandRunner.jspackages/core/js/domain/domain-custom-autoincrement-keyword-definitions.jspackages/core/js/domain/domain-faker-string-keyword-definitions.jspackages/core/js/domain/domain-keywords.jspackages/core/js/faker/faker-command-help-metadata.jspackages/core/src/index.jspackages/core/src/tests/core-api/generateFromTextSpec.test.jspackages/core/src/tests/data_generation/unit/domain/domain-keyword-params-usage.test.jspackages/core/src/tests/data_generation/unit/domain/domain-param-invocation-coverage.test-helper.jspackages/core/src/tests/data_generation/unit/domain/domain-string-exec.test.jspackages/core/src/tests/data_generation/unit/domain/domainKeywords.test.jspackages/core/src/tests/data_generation/unit/faker/hybridFakerCommandRunner.test.jsscripts/generate-faker-help.js
💤 Files with no reviewable changes (1)
- docs-src/docs/040-test-data/domain/070-commerce.md
✅ Files skipped from review due to trivial changes (5)
- packages/core-ui/src/tests/interaction/matrix/support/scenario-fixture-identity.js
- docs/faker-options-param-report.md
- packages/core/js/domain/domain-custom-autoincrement-keyword-definitions.js
- docs-src/docs/040-test-data/domain/000-domain-test-data.md
- docs/faker-10.4.0-comparison-report.md
What changed
Upgrades the repo from
@faker-js/faker9.7.0to10.4.0and updates the curated Faker integration surfaces to match the current runtime more closely.Why it changed
Faker 10 removes several previously curated commands and changes some signatures. The repo also had a parser mismatch for
internet.ipv4/internet.ipv6, and the helper-command list needed a clearer split between commands we know about internally and commands we allow through the schema/API surfaces.Impact
commerce.upcRoot cause
The curated command catalog, safe-rule validation, and UI picker/fixture generation were all treating "known to the codebase" and "allowed for users" as the same concept. Faker 10 made that coupling more visible because runtime support and desired product exposure no longer matched exactly.
Validation
pnpm run verify:localSummary by CodeRabbit
Release Notes
New Features
@faker-js/fakerv10.4.0, including newcommerce.upctest-data generation.Documentation
commerce.upcdocs; removed/updated documentation for dropped or renamed finance/image/internet methods.Bug Fixes
string.uuidargument handling.