UNPKG

@revoloo/cypress6

Version:

Cypress.io end to end testing tool

128 lines (96 loc) 2.91 kB
require('../lib/environment') const chai = require('chai') chai.use(require('chai-subset')) global.root = '../../' global.supertest = require('supertest') global.nock = require('nock') global.expect = chai.expect global.mockery = require('mockery') global.proxyquire = require('proxyquire') global.sinon = require('sinon') const _ = require('lodash') const Promise = require('bluebird') const path = require('path') const cache = require('../lib/cache') require('chai') .use(require('@cypress/sinon-chai')) .use(require('chai-uuid')) .use(require('chai-as-promised')) if (process.env.UPDATE) { throw new Error('You\'re using UPDATE=1 which is the old way of updating snapshots.\n\nThe correct environment variable is SNAPSHOT_UPDATE=1') } if (process.env.UPDATE_SNAPSHOT) { throw new Error('You\'re using UPDATE_SNAPSHOT=1\n\nThe correct environment variable is SNAPSHOT_UPDATE=1') } if (process.env.UPDATE_SNAPSHOTS) { throw new Error('You\'re using UPDATE_SNAPSHOTS=1\n\nThe correct environment variable is SNAPSHOT_UPDATE=1') } let hasOnly = false; // hack for older version of mocha so that // snap-shot-it can find suite._onlyTests ['it', 'describe', 'context'].forEach((prop) => { const backup = global[prop].only global[prop].only = function (...args) { hasOnly = true return backup.apply(this, args) } }) const originalEnv = process.env const env = _.clone(process.env) sinon.usingPromise(Promise) // backup these originals const { restore, useFakeTimers, } = sinon sinon.useFakeTimers = function (...args) { sinon._clock = useFakeTimers.apply(sinon, args) } sinon.restore = function (...args) { let c c = sinon._clock if (c) { c.restore() } return restore.apply(sinon, args) } mockery.enable({ warnOnUnregistered: false, }) // stub out the entire electron object for our stub // we must use an absolute path here because of the way mockery internally loads this // module - meaning the first time electron is required it'll use this path string // so because its required from a separate module we must use an absolute reference to it mockery.registerSubstitute( 'electron', path.join(__dirname, './support/helpers/electron_stub'), ) // stub out electron's original-fs module which is available when running in electron mockery.registerMock('original-fs', {}) before(function () { if (hasOnly) { this.test.parent._onlyTests = [true] } }) // appData.ensure() beforeEach(function () { this.originalEnv = originalEnv nock.disableNetConnect() nock.enableNetConnect(/localhost/) // always clean up the cache // before each test return cache.remove() }) afterEach(() => { sinon.restore() nock.cleanAll() nock.enableNetConnect() process.env = _.clone(env) }) module.exports = { expect: global.expect, nock: global.nock, proxyquire: global.proxyquire, sinon: global.sinon, root: global.root, }