@tft/crispr-forms-testing 21.0.9 → 21.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import type { AnyFieldConfig } from '@tft/crispr-forms/utils';
1
+ import type { FormConfig, AnyFieldConfig } from '@tft/crispr-forms/utils';
2
2
  /**
3
3
  * Registers a `test.describe` block for a field config, automatically selecting
4
4
  * the correct test suite based on `controlType`.
@@ -19,3 +19,16 @@ import type { AnyFieldConfig } from '@tft/crispr-forms/utils';
19
19
  * ```
20
20
  */
21
21
  export declare function testField(config: AnyFieldConfig): void;
22
+ /**
23
+ * Registers a `testField` block for every field in a `FormConfig`.
24
+ * Non-control fields (heading, divider, button) are skipped automatically.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * test.describe('My Form', () => {
29
+ * test.beforeEach(async ({ page }) => page.goto('/my-form'));
30
+ * testForm(myFormConfig);
31
+ * });
32
+ * ```
33
+ */
34
+ export declare function testForm(config: FormConfig): void;
@@ -66,4 +66,21 @@ export function testField(config) {
66
66
  }
67
67
  });
68
68
  }
69
+ /**
70
+ * Registers a `testField` block for every field in a `FormConfig`.
71
+ * Non-control fields (heading, divider, button) are skipped automatically.
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * test.describe('My Form', () => {
76
+ * test.beforeEach(async ({ page }) => page.goto('/my-form'));
77
+ * testForm(myFormConfig);
78
+ * });
79
+ * ```
80
+ */
81
+ export function testForm(config) {
82
+ for (const field of config.fields) {
83
+ testField(field);
84
+ }
85
+ }
69
86
  //# sourceMappingURL=field-test-factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field-test-factory.js","sourceRoot":"","sources":["../../../../libs/crispr-forms-testing/src/field-tests/field-test-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAcxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,SAAS,CAAC,MAAsB;IAC9C,IAAI,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC;QAAE,OAAO;IAEvC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE;QACrC,QAAQ,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3B,KAAK,OAAO;gBACV,cAAc,CAAC,MAA0B,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,UAAU;gBACb,iBAAiB,CAAC,MAA6B,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,UAAU;gBACb,iBAAiB,CAAC,MAA6B,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,QAAQ;gBACX,eAAe,CAAC,MAA2B,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,QAAQ;gBACX,eAAe,CAAC,MAA2B,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,YAAY;gBACf,mBAAmB,CAAC,MAA+B,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,cAAc;gBACjB,qBAAqB,CAAC,MAAiC,CAAC,CAAC;gBACzD,MAAM;YACR,KAAK,sBAAsB;gBACzB,6BAA6B,CAAC,MAAyC,CAAC,CAAC;gBACzE,MAAM;YACR,KAAK,YAAY;gBACf,mBAAmB,CAAC,MAA+B,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,gBAAgB;gBACnB,uBAAuB,CAAC,MAAmC,CAAC,CAAC;gBAC7D,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { test } from '@playwright/test';\nimport type {\n AnyFieldConfig,\n InputFieldConfig,\n TextareaFieldConfig,\n CheckboxFieldConfig,\n SelectFieldConfig,\n SliderFieldConfig,\n DatepickerFieldConfig,\n AutocompleteFieldConfig,\n AutocompleteChiplistFieldConfig,\n FileUploadFieldConfig,\n UnitConversionFieldConfig,\n} from '@tft/crispr-forms/utils';\nimport { testInputField } from './input.tests';\nimport { testTextareaField } from './textarea.tests';\nimport { testCheckboxField } from './checkbox.tests';\nimport { testSelectField } from './select.tests';\nimport { testSliderField } from './slider.tests';\nimport { testDatepickerField } from './datepicker.tests';\nimport { testAutocompleteField } from './autocomplete.tests';\nimport { testAutocompleteChiplistField } from './autocomplete-chiplist.tests';\nimport { testFileUploadField } from './file-upload.tests';\nimport { testUnitConversionField } from './unit-conversion.tests';\n\n/**\n * Registers a `test.describe` block for a field config, automatically selecting\n * the correct test suite based on `controlType`.\n *\n * Non-control fields (heading, divider, button) are skipped silently.\n *\n * @example\n * ```ts\n * import { testField } from '@tft/crispr-forms-testing';\n * import { myFormConfig } from './my-form.config';\n *\n * test.describe('My Form', () => {\n * test.beforeEach(async ({ page }) => page.goto('/my-form'));\n * for (const field of myFormConfig.fields) {\n * testField(field);\n * }\n * });\n * ```\n */\nexport function testField(config: AnyFieldConfig) {\n if (!('controlName' in config)) return;\n\n test.describe(config.controlName, () => {\n switch (config.controlType) {\n case 'input':\n testInputField(config as InputFieldConfig);\n break;\n case 'textarea':\n testTextareaField(config as TextareaFieldConfig);\n break;\n case 'checkbox':\n testCheckboxField(config as CheckboxFieldConfig);\n break;\n case 'select':\n testSelectField(config as SelectFieldConfig);\n break;\n case 'slider':\n testSliderField(config as SliderFieldConfig);\n break;\n case 'datepicker':\n testDatepickerField(config as DatepickerFieldConfig);\n break;\n case 'autocomplete':\n testAutocompleteField(config as AutocompleteFieldConfig);\n break;\n case 'autocompleteChiplist':\n testAutocompleteChiplistField(config as AutocompleteChiplistFieldConfig);\n break;\n case 'fileUpload':\n testFileUploadField(config as FileUploadFieldConfig);\n break;\n case 'unitConversion':\n testUnitConversionField(config as UnitConversionFieldConfig);\n break;\n }\n });\n}\n"]}
1
+ {"version":3,"file":"field-test-factory.js","sourceRoot":"","sources":["../../../../libs/crispr-forms-testing/src/field-tests/field-test-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAexC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,SAAS,CAAC,MAAsB;IAC9C,IAAI,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC;QAAE,OAAO;IAEvC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE;QACrC,QAAQ,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3B,KAAK,OAAO;gBACV,cAAc,CAAC,MAA0B,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,UAAU;gBACb,iBAAiB,CAAC,MAA6B,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,UAAU;gBACb,iBAAiB,CAAC,MAA6B,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,QAAQ;gBACX,eAAe,CAAC,MAA2B,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,QAAQ;gBACX,eAAe,CAAC,MAA2B,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,YAAY;gBACf,mBAAmB,CAAC,MAA+B,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,cAAc;gBACjB,qBAAqB,CAAC,MAAiC,CAAC,CAAC;gBACzD,MAAM;YACR,KAAK,sBAAsB;gBACzB,6BAA6B,CAAC,MAAyC,CAAC,CAAC;gBACzE,MAAM;YACR,KAAK,YAAY;gBACf,mBAAmB,CAAC,MAA+B,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,gBAAgB;gBACnB,uBAAuB,CAAC,MAAmC,CAAC,CAAC;gBAC7D,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAkB;IACzC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;AACH,CAAC","sourcesContent":["import { test } from '@playwright/test';\nimport type {\n FormConfig,\n AnyFieldConfig,\n InputFieldConfig,\n TextareaFieldConfig,\n CheckboxFieldConfig,\n SelectFieldConfig,\n SliderFieldConfig,\n DatepickerFieldConfig,\n AutocompleteFieldConfig,\n AutocompleteChiplistFieldConfig,\n FileUploadFieldConfig,\n UnitConversionFieldConfig,\n} from '@tft/crispr-forms/utils';\nimport { testInputField } from './input.tests';\nimport { testTextareaField } from './textarea.tests';\nimport { testCheckboxField } from './checkbox.tests';\nimport { testSelectField } from './select.tests';\nimport { testSliderField } from './slider.tests';\nimport { testDatepickerField } from './datepicker.tests';\nimport { testAutocompleteField } from './autocomplete.tests';\nimport { testAutocompleteChiplistField } from './autocomplete-chiplist.tests';\nimport { testFileUploadField } from './file-upload.tests';\nimport { testUnitConversionField } from './unit-conversion.tests';\n\n/**\n * Registers a `test.describe` block for a field config, automatically selecting\n * the correct test suite based on `controlType`.\n *\n * Non-control fields (heading, divider, button) are skipped silently.\n *\n * @example\n * ```ts\n * import { testField } from '@tft/crispr-forms-testing';\n * import { myFormConfig } from './my-form.config';\n *\n * test.describe('My Form', () => {\n * test.beforeEach(async ({ page }) => page.goto('/my-form'));\n * for (const field of myFormConfig.fields) {\n * testField(field);\n * }\n * });\n * ```\n */\nexport function testField(config: AnyFieldConfig) {\n if (!('controlName' in config)) return;\n\n test.describe(config.controlName, () => {\n switch (config.controlType) {\n case 'input':\n testInputField(config as InputFieldConfig);\n break;\n case 'textarea':\n testTextareaField(config as TextareaFieldConfig);\n break;\n case 'checkbox':\n testCheckboxField(config as CheckboxFieldConfig);\n break;\n case 'select':\n testSelectField(config as SelectFieldConfig);\n break;\n case 'slider':\n testSliderField(config as SliderFieldConfig);\n break;\n case 'datepicker':\n testDatepickerField(config as DatepickerFieldConfig);\n break;\n case 'autocomplete':\n testAutocompleteField(config as AutocompleteFieldConfig);\n break;\n case 'autocompleteChiplist':\n testAutocompleteChiplistField(config as AutocompleteChiplistFieldConfig);\n break;\n case 'fileUpload':\n testFileUploadField(config as FileUploadFieldConfig);\n break;\n case 'unitConversion':\n testUnitConversionField(config as UnitConversionFieldConfig);\n break;\n }\n });\n}\n\n/**\n * Registers a `testField` block for every field in a `FormConfig`.\n * Non-control fields (heading, divider, button) are skipped automatically.\n *\n * @example\n * ```ts\n * test.describe('My Form', () => {\n * test.beforeEach(async ({ page }) => page.goto('/my-form'));\n * testForm(myFormConfig);\n * });\n * ```\n */\nexport function testForm(config: FormConfig) {\n for (const field of config.fields) {\n testField(field);\n }\n}\n"]}
package/index.js CHANGED
@@ -14,5 +14,5 @@ export * from './field-tests/autocomplete.tests';
14
14
  export * from './field-tests/autocomplete-chiplist.tests';
15
15
  export * from './field-tests/file-upload.tests';
16
16
  export * from './field-tests/unit-conversion.tests';
17
- export * from './field-tests/field-test-factory';
17
+ export * from './field-tests/field-test-factory'; // exports testField and testForm
18
18
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/crispr-forms-testing/src/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,kGAAkG;AAClG,OAAO,mBAAmB,CAAC;AAE3B,0DAA0D;AAC1D,cAAc,kBAAkB,CAAC;AAEjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC","sourcesContent":["// Load Angular's JIT compiler. Required because crispr-forms uses partial compilation\n// (Ivy linker format) which needs the JIT compiler as a fallback in Node/Playwright environments.\nimport '@angular/compiler';\n\n// Re-export Playwright so consumers only need one import.\nexport * from '@playwright/test';\n\nexport * from './helpers/form.helpers';\nexport * from './field-tests/input.tests';\nexport * from './field-tests/textarea.tests';\nexport * from './field-tests/checkbox.tests';\nexport * from './field-tests/select.tests';\nexport * from './field-tests/slider.tests';\nexport * from './field-tests/datepicker.tests';\nexport * from './field-tests/autocomplete.tests';\nexport * from './field-tests/autocomplete-chiplist.tests';\nexport * from './field-tests/file-upload.tests';\nexport * from './field-tests/unit-conversion.tests';\nexport * from './field-tests/field-test-factory';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/crispr-forms-testing/src/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,kGAAkG;AAClG,OAAO,mBAAmB,CAAC;AAE3B,0DAA0D;AAC1D,cAAc,kBAAkB,CAAC;AAEjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC,CAAC,iCAAiC","sourcesContent":["// Load Angular's JIT compiler. Required because crispr-forms uses partial compilation\n// (Ivy linker format) which needs the JIT compiler as a fallback in Node/Playwright environments.\nimport '@angular/compiler';\n\n// Re-export Playwright so consumers only need one import.\nexport * from '@playwright/test';\n\nexport * from './helpers/form.helpers';\nexport * from './field-tests/input.tests';\nexport * from './field-tests/textarea.tests';\nexport * from './field-tests/checkbox.tests';\nexport * from './field-tests/select.tests';\nexport * from './field-tests/slider.tests';\nexport * from './field-tests/datepicker.tests';\nexport * from './field-tests/autocomplete.tests';\nexport * from './field-tests/autocomplete-chiplist.tests';\nexport * from './field-tests/file-upload.tests';\nexport * from './field-tests/unit-conversion.tests';\nexport * from './field-tests/field-test-factory'; // exports testField and testForm\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tft/crispr-forms-testing",
3
- "version": "21.0.9",
3
+ "version": "21.0.10",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "exports": {