chai-fs
chai-fs copied to clipboard
return the _super call
When using this plugin in conjunction with chai-as-promised, you can run into issues the way you both override equal
.
With code like await expect(foo).to.eventually.equal(bar)
Without this change:
TypeError: { __flags:
{ ssfi: [Function: overwritingMethodWrapper],
lockSsfi: true,
object: {},
message: 'element: getText',
eventually: true },
assert: [Function],
__methods:
{ an:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
a:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
include:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
contain:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
contains:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
includes:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
length:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
lengthOf:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
startsWith:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
startWith:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
endsWith:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
endWith:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
equalIgnoreCase:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
equalIgnoreSpaces:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
containIgnoreSpaces:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
containIgnoreCase:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
singleLine:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
reverseOf:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
palindrome:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
entriesCount:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
indexOf:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
content:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
contents:
{ method: [Function: overwritingChainableMethodWrapper],
chainingBehavior: [Function: overwritingChainableMethodGetter] },
files: { method: [Function], chainingBehavior: [Function] },
subDirs: { method: [Function], chainingBehavior: [Function] } },
equal: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
equals: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
eq: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
eql: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
eqls: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
above: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
gt: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
greaterThan: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
least: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
gte: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
below: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
lt: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
lessThan: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
most: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
lte: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
within: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
instanceof: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
instanceOf: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
property: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
ownProperty: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
haveOwnProperty: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
ownPropertyDescriptor: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
haveOwnPropertyDescriptor: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
match: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
matches: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
string: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
keys: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
key: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
throw: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
throws: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
Throw: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
respondTo: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
respondsTo: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
satisfy: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
satisfies: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
closeTo: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
approximately: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
members: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
oneOf: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
change: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
changes: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
increase: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
increases: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
decrease: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
decreases: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
by: { [Function: overwritingMethodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
rejectedWith: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
notify: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
become: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
callCount: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
calledBefore: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
calledAfter: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
calledImmediatelyBefore: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
calledImmediatelyAfter: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
calledOn: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
calledWith: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
calledOnceWith: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
calledWithExactly: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
calledOnceWithExactly: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
calledWithMatch: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
returned: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
thrown: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
basename: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
dirname: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
extname: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
path: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
file: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
schema: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
directory: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } },
symlink: { [Function: methodWrapper] __flags: { ssfi: [Function: proxyGetter] } } } is not a thenable.
at assertIsAboutPromise (node_modules/chai-as-promised/lib/chai-as-promised.js:31:19)
at Assertion.<anonymous> (node_modules/chai-as-promised/lib/chai-as-promised.js:54:13)
at Assertion.propertyGetter (node_modules/chai/lib/chai/utils/addProperty.js:62:29)
at Object.get (<anonymous>)
at Object.proxyGetter [as get] (node_modules/chai/lib/chai/utils/proxify.js:98:22)
at Context.<anonymous> (test/integration/chai-webdriver-test.js:64:52)
With this change:
✓ works (3922ms)
An interesting note, if you change the code to use eq
or equals
instead, it works without any changes.
I tried to reproduce this in your test suite, but failed. Partly because chai.getStyleTest
doesn't support promises.
The lockfile had an inconsistency, so I fixed that and now the tests pass.