UNPKG

@revoloo/cypress6

Version:

Cypress.io end to end testing tool

214 lines (178 loc) 4.56 kB
import bodyParser from 'body-parser' import cookieParser from 'cookie-parser' import e2e from '../support/helpers/e2e' let counts = null const urlencodedParser = bodyParser.urlencoded({ extended: false }) const jsonParser = bodyParser.json() const sendBackBody = (req, res) => { return res.json(req.body) } const onServer3 = function (app) { app.get('/login', (req, res) => { res.cookie('session', '1') return res.send('<html>login</html>') }) app.post('/login', (req, res) => { res.cookie('session', '2') return res.redirect('/cookies') }) return app.get('/cookies', (req, res) => { return res.json({ cookie: req.headers.cookie, }) }) } const onServer2 = function (app) { app.get('/statusCode', (req, res) => { const { code, } = req.query return res.sendStatus(code) }) app.get('/params', (req, res) => { return res.json({ url: req.url, params: req.query, }) }) app.get('/redirect', (req, res) => { return res.redirect('/home') }) app.get('/redirectWithCookie', (req, res) => { res.cookie('foo', 'bar') return res.redirect('/home') }) app.get('/home', (req, res) => { return res.send('<html>home</html>') }) app.post('/redirectPost', (req, res) => { return res.redirect('/home') }) app.get('/headers', (req, res) => { return res.json({ headers: req.headers, }) }) app.post('/form', urlencodedParser, sendBackBody) return app.post('/json', jsonParser, sendBackBody) } const onServer = function (app) { app.use(cookieParser()) app.get('/timeout', (req, res) => { setTimeout(() => { res.set('Access-Control-Allow-Origin', '*') .end('it worked') }, req.query.ms) }) app.get('/cookies*', (req, res) => { return res.json(req.cookies) }) app.get('/counts', (req, res) => { return res.json(counts) }) app.get('*', (req, res) => { const host = req.get('host') counts[host] += 1 switch (host) { case 'localhost:2290': return res .cookie('2290', true, { path: '/cookies/one', }) .redirect('http://localhost:2291/') case 'localhost:2291': return res .cookie('2291', true, { path: '/cookies/two', }) .redirect('http://localhost:2292/') case 'localhost:2292': return res .set('Content-Type', 'text/html') .cookie('2292', true, { path: '/cookies/three', }) .send('<html><head></head><body>hi</body></html>') case 'localhost:2293': return res .cookie('2293', true, { httpOnly: true, maxAge: 60000, }) .cookie('2293-session', true) .send({}) default: } }) } describe('e2e requests', () => { e2e.setup({ servers: [{ port: 2290, onServer, }, { port: 2291, onServer, }, { port: 2292, onServer, }, { port: 2293, onServer, }, { port: 2294, onServer: onServer2, }, { port: 2295, onServer: onServer3, }], }) beforeEach(() => { return counts = { 'localhost:2290': 0, 'localhost:2291': 0, 'localhost:2292': 0, 'localhost:2293': 0, } }) e2e.it('passes', { spec: 'request_spec.js', snapshot: true, config: { responseTimeout: 1000, }, }) it('fails when network immediately fails', function () { return e2e.exec(this, { spec: 'request_http_network_error_failing_spec.js', snapshot: true, expectedExitCode: 1, }) }) it('fails on status code', function () { return e2e.exec(this, { spec: 'request_status_code_failing_spec.js', snapshot: true, expectedExitCode: 1, onStdout (stdout) { return stdout .replace(/"user-agent": ".+",/, '"user-agent": "foo",') .replace(/"etag": "(.+),/, '"etag": "W/13-52060a5f",') .replace(/"date": "(.+),/, '"date": "Fri, 18 Aug 2017 15:01:13 GMT",') }, }) }) it('prints long http props on fail', function () { return e2e.exec(this, { spec: 'request_long_http_props_failing_spec.js', snapshot: true, expectedExitCode: 1, onStdout (stdout) { return stdout .replace(/"user-agent": ".+",/, '"user-agent": "foo",') .replace(/"etag": "(.+),/, '"etag": "W/13-52060a5f",') .replace(/"date": "(.+),/, '"date": "Fri, 18 Aug 2017 15:01:13 GMT",') }, }) }) })