diff --git a/packages/jsts/src/rules/S2699/chai.fixture.js b/packages/jsts/src/rules/S2699/chai.fixture.js index c77faaa717d..8581fd743e3 100644 --- a/packages/jsts/src/rules/S2699/chai.fixture.js +++ b/packages/jsts/src/rules/S2699/chai.fixture.js @@ -64,3 +64,6 @@ describe('chai test cases', () => { expect(1).to.equal(2); } }); + +chai.expect(5).to.equal(5); // Compliant: assertion is recognized outside a {describe > it} scope + diff --git a/packages/jsts/src/rules/S2699/rule.ts b/packages/jsts/src/rules/S2699/rule.ts index 6b08b63d4cc..8190169dafc 100644 --- a/packages/jsts/src/rules/S2699/rule.ts +++ b/packages/jsts/src/rules/S2699/rule.ts @@ -90,7 +90,14 @@ class TestCaseAssertionVisitor { return; } if (isFunctionCall(node)) { - const functionDef = resolveFunction(this.context, node.callee); + const { callee } = node; + + if (callee.name === 'expect') { + this.hasAssertions = true; + return; + } + + const functionDef = resolveFunction(this.context, callee); if (functionDef) { this.visit(context, functionDef.body, visitedNodes); } diff --git a/packages/jsts/src/rules/S2699/vitest.fixture.js b/packages/jsts/src/rules/S2699/vitest.fixture.js index 209991d5310..b2f536c3280 100644 --- a/packages/jsts/src/rules/S2699/vitest.fixture.js +++ b/packages/jsts/src/rules/S2699/vitest.fixture.js @@ -19,6 +19,10 @@ describe('vitest test cases', () => { check(); }); + it('recognizes global expect as an assertion', () => { + expect(5).toEqual(5); + }); + function check() { expect(1).toEqual(2); }