Skip to content

prefer-user-event: Cannot read property 'value' of undefined #405

@AriPerkkio

Description

@AriPerkkio

Hello, prefer-user-event rule seems to crash in certain cases. This issue was spotted by automated CI run - it is not blocking my development or anything.

AriPerkkio/eslint-remote-tester#210 (comment)

"eslint-plugin-testing-library": "^4.9.0"
module.exports = {
    root: true,
    env: {
        es6: true,
        node: true,
    },
    parserOptions: {
        ecmaVersion: 2020,
        sourceType: "module",
        ecmaFeatures: {
            jsx: true,
        },
    },
    plugins: ["testing-library"],
    rules: {
        "testing-library/prefer-user-event": "error",
    },
};

Minimal repro:

const createEvent = () => "Event";
const event = createEvent();
TypeError: Cannot read property 'value' of undefined
Occurred while linting /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/.cache-eslint-remote-tester/doasync/trace-router/src/router.ts:35
    at Object.VariableDeclarator (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-plugin-testing-library/rules/prefer-user-event.js:139:26)
    at enhancedRuleInstructions.<computed> (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-plugin-testing-library/create-testing-library-rule/detect-testing-library-utils.js:518:105)
Crash reports from real projects

Rule: prefer-user-event

  • Message: Cannot read property 'value' of undefined Occurred while linting /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/.cache-eslint-remote-tester/doasync/trace-router/src/route.ts:114
  • Path: doasync/trace-router/src/route.ts
  • Link
  112 |   const { path, matchOptions } = config;
  113 |   const match = createMatch<P>(path, matchOptions);
> 114 |   const navigate = createEvent<P | void>();
  115 |   const redirect = createEvent<P | void>();
  116 |   const $params = createStore<P | null>(null);
  117 |   const $visible = $params.map(Boolean);
TypeError: Cannot read property 'value' of undefined
Occurred while linting /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/.cache-eslint-remote-tester/doasync/trace-router/src/route.ts:114
    at Object.VariableDeclarator (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-plugin-testing-library/rules/prefer-user-event.js:139:26)
    at enhancedRuleInstructions.<computed> (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-plugin-testing-library/create-testing-library-rule/detect-testing-library-utils.js:518:105)
    at /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/safe-emitter.js:45:58
    at Array.forEach (<anonymous>)
    at Object.emit (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
    at NodeEventGenerator.applySelector (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/node-event-generator.js:293:26)
    at NodeEventGenerator.applySelectors (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/node-event-generator.js:322:22)
    at NodeEventGenerator.enterNode (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/node-event-generator.js:336:14)
    at CodePathAnalyzer.enterNode (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js:711:23)
    at /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/linter.js:960:32

Rule: prefer-user-event

  • Message: Cannot read property 'value' of undefined Occurred while linting /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/.cache-eslint-remote-tester/doasync/trace-router/src/router.ts:35
  • Path: doasync/trace-router/src/router.ts
  • Link
  33 |   let history = userHistory! ?? createHistory<S>(root);
  34 |
> 35 |   const historyUpdated = createEvent<Update<S>>();
  36 |   const $historyUpdate = createStore<Update<S>>({
  37 |     location: history.location,
  38 |     action: history.action,
TypeError: Cannot read property 'value' of undefined
Occurred while linting /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-remote-tester/.cache-eslint-remote-tester/doasync/trace-router/src/router.ts:35
    at Object.VariableDeclarator (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-plugin-testing-library/rules/prefer-user-event.js:139:26)
    at enhancedRuleInstructions.<computed> (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint-plugin-testing-library/create-testing-library-rule/detect-testing-library-utils.js:518:105)
    at /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/safe-emitter.js:45:58
    at Array.forEach (<anonymous>)
    at Object.emit (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/safe-emitter.js:45:38)
    at NodeEventGenerator.applySelector (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/node-event-generator.js:293:26)
    at NodeEventGenerator.applySelectors (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/node-event-generator.js:322:22)
    at NodeEventGenerator.enterNode (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/node-event-generator.js:336:14)
    at CodePathAnalyzer.enterNode (/home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js:711:23)
    at /home/runner/work/eslint-remote-tester/eslint-remote-tester/ci/node_modules/eslint/lib/linter/linter.js:960:32

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingreleased

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions