I am trying to write my Cucumber tests using TypScript, like this:
import { browser, $$ } from 'protractor';
import { Given, Then } from 'cucumber'
import { expect } from 'chai';
Given('I navigate to the homepage', function (callback) {
browser.get('http://localhost:4200');
callback();
});
Then('I want to see the welcome message {string}', function (message, callback) {
expect($$('h1').first().getText()).to.eventually.equal(message).and.notify(callback);
});
However, Protractor complains:
Error: Invalid Chai property: eventually
How can I import this? I have tried:
import { eventual } from 'chai-as-promised';
but this doesn't work. How can I accomplish this? I have also tried rewriting the Then call using await, but the compiler complains that you cannot mix callbacks with async functions. Aargh!
In your protractor configuration, add the following lines at the end of the onPrepare function :
onPrepare: function() {
...
// Load chai assertions
const chai = require('chai');
const chaiAsPromised = require('chai-as-promised');
// Load chai-as-promised support
chai.use(chaiAsPromised);
// Initialise should API (attaches as a property on Object)
chai.should();
}
When using async function you should remove the callback from the function signature.
Then('I want to see the welcome message {string}',
async function (message) {
await chai.expect($$('h1').first().getText())
.to.eventually.equal(message);
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With