diff --git a/.gitignore b/.gitignore
index 59468ba..ad63f25 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ node_modules
.idea
.DS_Store
cypress/screenshots
+cypress/videos
diff --git a/cypress.config.ts b/cypress.config.ts
index 3dee69d..0f842c2 100644
--- a/cypress.config.ts
+++ b/cypress.config.ts
@@ -2,6 +2,9 @@ import { cypressCodegen } from 'cypress-codegen/dist/plugin';
import { defineConfig } from 'cypress';
export default defineConfig({
+ screenshotOnRunFailure: false,
+ video: false,
+
e2e: {
setupNodeEvents(on, config) {
cypressCodegen(on, config);
diff --git a/cypress/commands/custom-mount.tsx b/cypress/commands/custom-mount.tsx
new file mode 100644
index 0000000..36caf44
--- /dev/null
+++ b/cypress/commands/custom-mount.tsx
@@ -0,0 +1,17 @@
+import * as React from 'react';
+
+export const customMount = (Component: React.ReactElement) => {
+ cy.mount(
+
+
+
+ );
+};
+
+declare global {
+ namespace Cypress {
+ interface Chainable {
+ customMount(Component: React.ReactElement): Chainable;
+ }
+ }
+}
diff --git a/cypress/component/component-example.cy.tsx b/cypress/component/component-example.cy.tsx
index dc449e1..65805f2 100644
--- a/cypress/component/component-example.cy.tsx
+++ b/cypress/component/component-example.cy.tsx
@@ -23,4 +23,29 @@ describe('Example Test', () => {
it('should import custom commands in component tests', () => {
cy.functionExample(componentText);
});
+
+ it('should dynamically import custom commands from arrow functions', () => {
+ cy.arrowFunctionExample(componentText);
+ });
+
+ it('should support scoped methods', () => {
+ cy.contains(componentText).functionExampleScoped(componentText);
+ });
+
+ it('should dynamically import nested custom commands', () => {
+ cy.nestedExample(componentText);
+ });
+
+ it('should chain custom commands', () => {
+ cy.log(componentText)
+ .functionExample(componentText)
+ .arrowFunctionExample(componentText)
+ .nestedExample(componentText);
+ });
+
+ it('should support custom mount commands', () => {
+ const myComponent = () => <>{'Different text'}>;
+ cy.customMount(myComponent);
+ cy.contains('Different text');
+ });
});
diff --git a/src/generate-types-from-abstract-syntax-tree.ts b/src/generate-types-from-abstract-syntax-tree.ts
index 569f88e..34397fb 100644
--- a/src/generate-types-from-abstract-syntax-tree.ts
+++ b/src/generate-types-from-abstract-syntax-tree.ts
@@ -30,7 +30,7 @@ import { isScopedMethod } from './common';
export const generateTypesFromAbstractSyntaxTree = (filePath: string, prettierConfig?: Options) => {
const contents = readFileSync(resolve(filePath)).toString();
- const ast = parse(contents, { sourceType: 'module', plugins: ['typescript'] });
+ const ast = parse(contents, { sourceType: 'module', plugins: ['typescript', 'jsx'] });
const currentNodes = ast.program.body;
const customCommands = currentNodes
.filter(