0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-02-17 23:45:29 -05:00

test: add e2e test - testing ci mode

This commit is contained in:
Juan Picado @jotadeveloper 2018-02-08 22:24:34 +01:00
parent 784bcf8ecc
commit 27286a5bff
No known key found for this signature in database
GPG key ID: 18AC54485952D158
8 changed files with 228 additions and 2 deletions

View file

@ -29,8 +29,10 @@ test:
- yarn run test
- nvm alias default 8
- yarn run test
- yarn run test:e2e
- nvm alias default 9
- yarn run test
- yarn run test:e2e
- yarn run coverage:publish
- echo "machine github.com login verdacciobot password $GITHUB_TOKEN" > ~/.netrc
- cd website && yarn install && GIT_USER=verdacciobot USE_SSH=false yarn run publish-gh-pages

11
jest.e2e.config.js Normal file
View file

@ -0,0 +1,11 @@
/* eslint comma-dangle: 0 */
module.exports = {
'name': 'verdaccio-e2e-jest',
'verbose': true,
'collectCoverage': false,
'globalSetup': './test/e2e/setup.js',
'globalTeardown': './test/e2e/teardown.js',
'testEnvironment': './test/e2e/puppeteer_environment.js',
'testRegex': '(/test/e2e/e2e.*\\.spec)\\.js'
};

View file

@ -102,11 +102,13 @@
"jest": "22.1.4",
"jest-environment-jsdom": "22.1.4",
"jest-environment-jsdom-global": "1.0.3",
"jest-environment-node": "22.2.0",
"localstorage-memory": "1.0.2",
"node-sass": "4.7.2",
"normalize.css": "7.0.0",
"ora": "^1.4.0",
"prop-types": "15.6.0",
"puppeteer": "1.0.0",
"react": "16.2.0",
"react-dom": "16.2.0",
"react-hot-loader": "4.0.0-beta.17",
@ -145,6 +147,7 @@
"flow": "flow",
"pretest": "npm run code:build",
"test": "cross-env NODE_ENV=test BABEL_ENV=test jest --maxWorkers 2",
"test:e2e": "cross-env NODE_ENV=test BABEL_ENV=test jest --config ./jest.e2e.config.js --maxWorkers 2",
"test:unit": "cross-env NODE_ENV=test BABEL_ENV=test jest '(/test/unit.*\\.spec|/test/webui/.*\\.spec)\\.js' --maxWorkers 2",
"test:func": "cross-env NODE_ENV=test BABEL_ENV=test jest '(/test/functional.*\\.func)\\.js' --maxWorkers 2",
"pre:ci": "npm run lint && npm run build:webui",

24
test/e2e/e2e.spec.js Normal file
View file

@ -0,0 +1,24 @@
const timeout = 5000;
describe(
'/ (Home Page)',
() => {
let page;
beforeAll(async () => {
page = await global.__BROWSER__.newPage();
await page.goto('https://google.com');
}, timeout);
afterAll(async () => {
await page.close()
});
it('should load without error', async () => {
let text = await page.evaluate(() => document.body.textContent);
expect(text).toContain('google');
})
},
timeout
);

View file

@ -0,0 +1,37 @@
const chalk = require('chalk');
const NodeEnvironment = require('jest-environment-node');
const puppeteer = require('puppeteer');
const fs = require('fs');
const os = require('os');
const path = require('path');
const DIR = path.join(os.tmpdir(), 'jest_puppeteer_global_setup');
class PuppeteerEnvironment extends NodeEnvironment {
constructor(config) {
super(config)
}
async setup() {
console.log(chalk.yellow('Setup Test Environment.'));
await super.setup();
const wsEndpoint = fs.readFileSync(path.join(DIR, 'wsEndpoint'), 'utf8');
if (!wsEndpoint) {
throw new Error('wsEndpoint not found')
}
this.global.__BROWSER__ = await puppeteer.connect({
browserWSEndpoint: wsEndpoint,
})
}
async teardown() {
console.log(chalk.yellow('Teardown Test Environment.'));
await super.teardown()
}
runScript(script) {
return super.runScript(script)
}
}
module.exports = PuppeteerEnvironment;

16
test/e2e/setup.js Normal file
View file

@ -0,0 +1,16 @@
const chalk = require('chalk');
const puppeteer = require('puppeteer');
const fs = require('fs');
const mkdirp = require('mkdirp');
const os = require('os');
const path = require('path');
const DIR = path.join(os.tmpdir(), 'jest_puppeteer_global_setup');
module.exports = async function() {
console.log(chalk.green('Setup Puppeteer'));
const browser = await puppeteer.launch({});
global.__BROWSER__ = browser;
mkdirp.sync(DIR);
fs.writeFileSync(path.join(DIR, 'wsEndpoint'), browser.wsEndpoint());
};

12
test/e2e/teardown.js Normal file
View file

@ -0,0 +1,12 @@
const chalk = require('chalk');
const rimraf = require('rimraf');
const os = require('os');
const path = require('path');
const DIR = path.join(os.tmpdir(), 'jest_puppeteer_global_setup');
module.exports = async function() {
console.log(chalk.green('Teardown Puppeteer'));
await global.__BROWSER__.close();
rimraf.sync(DIR)
};

125
yarn.lock
View file

@ -264,6 +264,12 @@ acorn@^5.0.0, acorn@^5.3.0, acorn@^5.4.0:
version "5.4.1"
resolved "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz#fdc58d9d17f4a4e98d102ded826a9b9759125102"
agent-base@^4.1.0:
version "4.2.0"
resolved "https://registry.npmjs.org/agent-base/-/agent-base-4.2.0.tgz#9838b5c3392b962bad031e6a4c5e1024abec45ce"
dependencies:
es6-promisify "^5.0.0"
ajv-keywords@^2.0.0, ajv-keywords@^2.1.0:
version "2.1.1"
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
@ -1999,7 +2005,7 @@ concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
concat-stream@^1.4.10, concat-stream@^1.6.0:
concat-stream@1.6.0, concat-stream@^1.4.10, concat-stream@^1.6.0:
version "1.6.0"
resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
dependencies:
@ -2915,6 +2921,16 @@ es6-map@^0.1.3:
es6-symbol "~3.1.1"
event-emitter "~0.3.5"
es6-promise@^4.0.3:
version "4.2.4"
resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29"
es6-promisify@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
dependencies:
es6-promise "^4.0.3"
es6-set@~0.1.5:
version "0.1.5"
resolved "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
@ -3323,6 +3339,15 @@ extract-text-webpack-plugin@3.0.2:
schema-utils "^0.3.0"
webpack-sources "^1.0.1"
extract-zip@^1.6.5:
version "1.6.6"
resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz#1290ede8d20d0872b429fd3f351ca128ec5ef85c"
dependencies:
concat-stream "1.6.0"
debug "2.6.9"
mkdirp "0.5.0"
yauzl "2.4.1"
extsprintf@1.3.0:
version "1.3.0"
resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
@ -3377,6 +3402,12 @@ fbjs@^0.8.16:
setimmediate "^1.0.5"
ua-parser-js "^0.7.9"
fd-slicer@~1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
dependencies:
pend "~1.2.0"
figures@^1.5.0:
version "1.7.0"
resolved "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
@ -4164,6 +4195,13 @@ https-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
https-proxy-agent@^2.1.0:
version "2.1.1"
resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.1.1.tgz#a7ce4382a1ba8266ee848578778122d491260fd9"
dependencies:
agent-base "^4.1.0"
debug "^3.1.0"
husky@0.14.3:
version "0.14.3"
resolved "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3"
@ -4804,6 +4842,13 @@ jest-environment-jsdom@22.1.4, jest-environment-jsdom@^22.1.4:
jest-util "^22.1.4"
jsdom "^11.5.1"
jest-environment-node@22.2.0:
version "22.2.0"
resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.2.0.tgz#ba7d0183fac076d34867367a4ac53ced69e3d3a9"
dependencies:
jest-mock "^22.2.0"
jest-util "^22.2.0"
jest-environment-node@^22.1.4:
version "22.1.4"
resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.1.4.tgz#0f2946e8f8686ce6c5d8fa280ce1cd8d58e869eb"
@ -4866,10 +4911,24 @@ jest-message-util@^22.1.0:
slash "^1.0.0"
stack-utils "^1.0.1"
jest-message-util@^22.2.0:
version "22.2.0"
resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.2.0.tgz#84a6bb34186d8b9af7e0732fabbef63f7355f7b2"
dependencies:
"@babel/code-frame" "^7.0.0-beta.35"
chalk "^2.0.1"
micromatch "^2.3.11"
slash "^1.0.0"
stack-utils "^1.0.1"
jest-mock@^22.1.0:
version "22.1.0"
resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-22.1.0.tgz#87ec21c0599325671c9a23ad0e05c86fb5879b61"
jest-mock@^22.2.0:
version "22.2.0"
resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-22.2.0.tgz#444b3f9488a7473adae09bc8a77294afded397a7"
jest-regex-util@^22.1.0:
version "22.1.0"
resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.1.0.tgz#5daf2fe270074b6da63e5d85f1c9acc866768f53"
@ -4950,6 +5009,18 @@ jest-util@^22.1.4:
jest-validate "^22.1.2"
mkdirp "^0.5.1"
jest-util@^22.2.0:
version "22.2.0"
resolved "https://registry.npmjs.org/jest-util/-/jest-util-22.2.0.tgz#afad693641447858bec7b37f32952516bf887262"
dependencies:
callsites "^2.0.0"
chalk "^2.0.1"
graceful-fs "^4.1.11"
is-ci "^1.0.10"
jest-message-util "^22.2.0"
jest-validate "^22.2.0"
mkdirp "^0.5.1"
jest-validate@^22.1.2:
version "22.1.2"
resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-22.1.2.tgz#c3b06bcba7bd9a850919fe336b5f2a8c3a239404"
@ -4959,6 +5030,15 @@ jest-validate@^22.1.2:
leven "^2.1.0"
pretty-format "^22.1.0"
jest-validate@^22.2.0:
version "22.2.0"
resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-22.2.0.tgz#f7ce459105a8210825e5e57279f868ab080063fa"
dependencies:
chalk "^2.0.1"
jest-get-type "^22.1.0"
leven "^2.1.0"
pretty-format "^22.1.0"
jest-worker@^22.1.0:
version "22.1.0"
resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-22.1.0.tgz#0987832fe58fbdc205357f4c19b992446368cafb"
@ -5647,7 +5727,7 @@ mime@1.4.1:
version "1.4.1"
resolved "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
mime@^1.4.1, mime@^1.5.0:
mime@^1.3.4, mime@^1.4.1, mime@^1.5.0:
version "1.6.0"
resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
@ -5716,6 +5796,12 @@ mixin-object@^2.0.1:
for-in "^0.1.3"
is-extendable "^0.1.1"
mkdirp@0.5.0:
version "0.5.0"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
dependencies:
minimist "0.0.8"
mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
version "0.5.1"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
@ -6390,6 +6476,10 @@ pbkdf2@^3.0.3:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
pend@~1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
performance-now@^0.2.0:
version "0.2.0"
resolved "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
@ -6823,6 +6913,10 @@ proxy-addr@~2.0.2:
forwarded "~0.1.2"
ipaddr.js "1.5.2"
proxy-from-env@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee"
prr@~1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
@ -6853,6 +6947,19 @@ punycode@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
puppeteer@1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-1.0.0.tgz#20f3bb6ad6c6778b4d1fb750e808a29fec0a88a4"
dependencies:
debug "^2.6.8"
extract-zip "^1.6.5"
https-proxy-agent "^2.1.0"
mime "^1.3.4"
progress "^2.0.0"
proxy-from-env "^1.0.0"
rimraf "^2.6.1"
ws "^3.0.0"
q@^1.1.2, q@^1.4.1:
version "1.5.1"
resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@ -8950,6 +9057,14 @@ write@^0.2.1:
dependencies:
mkdirp "^0.5.1"
ws@^3.0.0:
version "3.3.3"
resolved "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
dependencies:
async-limiter "~1.0.0"
safe-buffer "~5.1.0"
ultron "~1.1.0"
ws@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/ws/-/ws-4.0.0.tgz#bfe1da4c08eeb9780b986e0e4d10eccd7345999f"
@ -9089,3 +9204,9 @@ yargs@~3.10.0:
cliui "^2.1.0"
decamelize "^1.0.0"
window-size "0.1.0"
yauzl@2.4.1:
version "2.4.1"
resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
dependencies:
fd-slicer "~1.0.1"