puppeteeer fails on extensions
gitea/salix/puppeteer This commit looks good
Details
gitea/salix/puppeteer This commit looks good
Details
This commit is contained in:
parent
5040d1d4a8
commit
14dcc66efe
|
@ -1,6 +1,7 @@
|
|||
/* eslint no-invalid-this: "off" */
|
||||
|
||||
import Nightmare from 'nightmare';
|
||||
// import Nightmare from 'nightmare';
|
||||
import Nightmare from 'puppeteer';
|
||||
import {URL} from 'url';
|
||||
import config from './config.js';
|
||||
|
||||
|
@ -34,9 +35,18 @@ let actions = {
|
|||
await this.autocompleteSearch(langSelector, 'English');
|
||||
},
|
||||
|
||||
// doLogin: async function(userName, password) {
|
||||
// if (password == null) password = 'nightmare';
|
||||
// await this.wait(`vn-login [name=user]`)
|
||||
// .clearInput(`vn-login [name=user]`)
|
||||
// .write(`vn-login [name=user]`, userName)
|
||||
// .write(`vn-login [name=password]`, password)
|
||||
// .click(`vn-login button[type=submit]`);
|
||||
// },
|
||||
|
||||
doLogin: async function(userName, password) {
|
||||
if (password == null) password = 'nightmare';
|
||||
await this.wait(`vn-login [name=user]`)
|
||||
return await this.waitFor(`vn-login [name=user]`)
|
||||
.clearInput(`vn-login [name=user]`)
|
||||
.write(`vn-login [name=user]`, userName)
|
||||
.write(`vn-login [name=password]`, password)
|
||||
|
@ -441,23 +451,25 @@ let actions = {
|
|||
}
|
||||
};
|
||||
|
||||
for (let name in actions) {
|
||||
Nightmare.action(name, function(...args) {
|
||||
let fnArgs = args.slice(0, args.length - 1);
|
||||
let done = args[args.length - 1];
|
||||
// for (let name in actions) {
|
||||
// Nightmare.action(name, function(...args) {
|
||||
// let fnArgs = args.slice(0, args.length - 1);
|
||||
// let done = args[args.length - 1];
|
||||
|
||||
actions[name].apply(this, fnArgs)
|
||||
.then(res => done(null, res))
|
||||
.catch(err => {
|
||||
let stringArgs = fnArgs
|
||||
.map(i => typeof i == 'function' ? 'Function' : i)
|
||||
.join(', ');
|
||||
// actions[name].apply(this, fnArgs)
|
||||
// .then(res => done(null, res))
|
||||
// .catch(err => {
|
||||
// let stringArgs = fnArgs
|
||||
// .map(i => typeof i == 'function' ? 'Function' : i)
|
||||
// .join(', ');
|
||||
|
||||
let orgMessage = err.message.startsWith('.wait()')
|
||||
? '.wait() timed out'
|
||||
: err.message;
|
||||
// let orgMessage = err.message.startsWith('.wait()')
|
||||
// ? '.wait() timed out'
|
||||
// : err.message;
|
||||
|
||||
done(new Error(`.${name}(${stringArgs}) failed: ${orgMessage}`));
|
||||
});
|
||||
});
|
||||
}
|
||||
// done(new Error(`.${name}(${stringArgs}) failed: ${orgMessage}`));
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
|
||||
export default actions;
|
||||
|
|
|
@ -1,29 +1,47 @@
|
|||
const Nightmare = require('nightmare');
|
||||
const config = require('./config.js');
|
||||
// const Nightmare = require('nightmare');
|
||||
// const config = require('./config.js');
|
||||
|
||||
let nightmare;
|
||||
// let nightmare;
|
||||
|
||||
module.exports = function createNightmare(width = 1280, height = 720) {
|
||||
if (nightmare)
|
||||
return nightmare;
|
||||
// module.exports = function createNightmare(width = 1280, height = 720) {
|
||||
// if (nightmare)
|
||||
// return nightmare;
|
||||
|
||||
nightmare = new Nightmare({
|
||||
show: process.env.E2E_SHOW,
|
||||
typeInterval: 10,
|
||||
x: 0,
|
||||
y: 0,
|
||||
waitTimeout: 2000,
|
||||
// openDevTools: {mode: 'detach'}
|
||||
}).viewport(width, height);
|
||||
// nightmare = new Nightmare({
|
||||
// show: process.env.E2E_SHOW,
|
||||
// typeInterval: 10,
|
||||
// x: 0,
|
||||
// y: 0,
|
||||
// waitTimeout: 2000,
|
||||
// // openDevTools: {mode: 'detach'}
|
||||
// }).viewport(width, height);
|
||||
|
||||
nightmare.on('console', (type, message, ...args) => {
|
||||
if (type === 'error') {
|
||||
console[type](message, ...args);
|
||||
throw new Error(message);
|
||||
} else
|
||||
console[type](message, ...args);
|
||||
// nightmare.on('console', (type, message, ...args) => {
|
||||
// if (type === 'error') {
|
||||
// console[type](message, ...args);
|
||||
// throw new Error(message);
|
||||
// } else
|
||||
// console[type](message, ...args);
|
||||
// });
|
||||
|
||||
// nightmare.header('Accept-Language', 'en');
|
||||
// return nightmare.goto(config.url);
|
||||
// };
|
||||
|
||||
// changes for puppeteer
|
||||
|
||||
const Puppeteer = require('puppeteer');
|
||||
|
||||
let browser;
|
||||
|
||||
module.exports = async function createNightmare() {
|
||||
if (browser)
|
||||
return browser;
|
||||
|
||||
browser = await Puppeteer.launch({
|
||||
headless: false,
|
||||
slowMo: 0, // slow down by ms
|
||||
});
|
||||
|
||||
nightmare.header('Accept-Language', 'en');
|
||||
return nightmare.goto(config.url);
|
||||
return browser;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
|
||||
const puppeteer = require('puppeteer');
|
||||
|
||||
(async() => {
|
||||
const browser = await puppeteer.launch({
|
||||
headless: false,
|
||||
slowMo: 0, // slow down by ms
|
||||
// devtools: true,
|
||||
});
|
||||
const page = await browser.newPage();
|
||||
await page.goto('https://wowhead.com');
|
||||
await page.screenshot({path: 'example.png'});
|
||||
|
||||
await browser.close();
|
||||
})();
|
|
@ -1,12 +1,40 @@
|
|||
// import createNightmare from '../../helpers/nightmare';
|
||||
|
||||
// describe('Login path', () => {
|
||||
// const nightmare = createNightmare();
|
||||
|
||||
// it('should receive an error when the username is incorrect', async() => {
|
||||
// const result = await nightmare
|
||||
// .doLogin('badUser', null)
|
||||
// .waitForLastSnackbar();
|
||||
|
||||
// changes for puppeteer
|
||||
|
||||
import createNightmare from '../../helpers/nightmare';
|
||||
import Puppeteer from 'puppeteer';
|
||||
import actions from '../../helpers/extensions';
|
||||
import {objectTypeAnnotation} from '@babel/types';
|
||||
|
||||
describe('Login path', () => {
|
||||
const nightmare = createNightmare();
|
||||
let browser;
|
||||
let nightmare;
|
||||
beforeEach(async() => {
|
||||
browser = await Puppeteer.launch({
|
||||
headless: false,
|
||||
slowMo: 0, // slow down by ms
|
||||
// devtools: true,
|
||||
});
|
||||
nightmare = await browser.newPage();
|
||||
Object.keys(actions).forEach(key => {
|
||||
nightmare.__proto__[key] = actions[key].bind(nightmare);
|
||||
});
|
||||
nightmare.__proto__.wait = nightmare.waitFor;
|
||||
});
|
||||
|
||||
it('should receive an error when the username is incorrect', async() => {
|
||||
fit('should receive an error when the username is incorrect', async() => {
|
||||
const result = await nightmare
|
||||
.doLogin('badUser', null)
|
||||
.waitForLastSnackbar();
|
||||
.doLogin('badUser', null);
|
||||
// .waitForLastSnackbar();
|
||||
|
||||
expect(result.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
|
50
gulpfile.js
50
gulpfile.js
|
@ -187,6 +187,56 @@ function e2eOnly() {
|
|||
}
|
||||
e2eOnly.description = `Runs the e2e tests only`;
|
||||
|
||||
function e2eSingleRun() {
|
||||
require('@babel/register')({presets: ['@babel/preset-env']});
|
||||
require('@babel/polyfill');
|
||||
|
||||
const jasmine = require('gulp-jasmine');
|
||||
const SpecReporter = require('jasmine-spec-reporter').SpecReporter;
|
||||
const createNightmare = require('./e2e/helpers/nightmare');
|
||||
|
||||
if (argv.show || argv.s)
|
||||
process.env.E2E_SHOW = true;
|
||||
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = true;
|
||||
|
||||
|
||||
const specFiles = [
|
||||
`${__dirname}/e2e/paths/01*/*[sS]pec.js`,
|
||||
// `${__dirname}/e2e/paths/02*/*[sS]pec.js`,
|
||||
// `${__dirname}/e2e/paths/03*/*[sS]pec.js`,
|
||||
// `${__dirname}/e2e/paths/04*/*[sS]pec.js`,
|
||||
// `${__dirname}/e2e/paths/05*/*[sS]pec.js`,
|
||||
// `${__dirname}/e2e/paths/06*/*[sS]pec.js`,
|
||||
// `${__dirname}/e2e/paths/07*/*[sS]pec.js`,
|
||||
// `${__dirname}/e2e/paths/08*/*[sS]pec.js`,
|
||||
// `${__dirname}/e2e/paths/09*/*[sS]pec.js`,
|
||||
// `${__dirname}/e2e/paths/**/*[sS]pec.js`,
|
||||
`${__dirname}/e2e/helpers/extensions.js`
|
||||
];
|
||||
|
||||
return gulp.src(specFiles).pipe(jasmine({
|
||||
errorOnFail: false,
|
||||
timeout: 10000,
|
||||
reporter: [
|
||||
new SpecReporter({
|
||||
spec: {
|
||||
displayStacktrace: 'summary',
|
||||
displaySuccessful: true,
|
||||
displayFailedSpec: true,
|
||||
displaySpecDuration: true,
|
||||
}
|
||||
})
|
||||
]
|
||||
})
|
||||
// .on('jasmineDone', async function() {
|
||||
// const nightmare = await createNightmare();
|
||||
// nightmare.end(() => {});
|
||||
// await browser.close();
|
||||
// })
|
||||
);
|
||||
}
|
||||
e2eSingleRun.description = `Runs the e2e tests just once`;
|
||||
|
||||
async function backendStatus() {
|
||||
const milliseconds = 250;
|
||||
return new Promise(resolve => {
|
||||
|
|
|
@ -74,6 +74,7 @@
|
|||
"minimist": "^1.2.0",
|
||||
"mysql2": "^1.6.5",
|
||||
"nightmare": "^3.0.2",
|
||||
"puppeteer": "^2.0.0",
|
||||
"node-sass": "^4.9.3",
|
||||
"nodemon": "^1.18.10",
|
||||
"plugin-error": "^1.0.1",
|
||||
|
|
Loading…
Reference in New Issue