-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathfake-test.spec.js
84 lines (68 loc) · 2.48 KB
/
fake-test.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
const puppeteer = require('puppeteer');
const RequestInterceptor = require('puppeteer-request-spy').RequestInterceptor;
const ResponseFaker = require('puppeteer-request-spy').ResponseFaker;
const minimatch = require('minimatch');
const assert = require('assert');
const fs = require('fs');
let browser;
before(async () => {
browser = await puppeteer.launch({
headless: true
});
});
after(async () => {
await browser.close();
});
describe('example-block', function () {
this.timeout(30000);
this.slow(10000);
let requestInterceptor;
let defaultPicture;
let jsonResponseFaker;
let imageResponseFaker;
let textResponseFaker;
let htmlResponseFaker;
before(() => {
requestInterceptor = new RequestInterceptor(minimatch, console);
defaultPicture = fs.readFileSync('./some-picture.png');
imageResponseFaker = new ResponseFaker('**/*.jpg', {
status: 200,
contentType: 'image/png',
body: defaultPicture
});
textResponseFaker = new ResponseFaker('**/some-path', {
status: 200,
contentType: 'text/plain',
body: 'some static text'
});
htmlResponseFaker = new ResponseFaker('**/some-path', {
status: 200,
contentType: 'text/html',
body: '<div>some static html</div>'
});
jsonResponseFaker = new ResponseFaker('**/*.json', {
status: 200,
contentType: 'application/json',
body: JSON.stringify({data: []})
});
requestInterceptor.addFaker(imageResponseFaker);
requestInterceptor.addFaker(textResponseFaker);
requestInterceptor.addFaker(htmlResponseFaker);
requestInterceptor.addFaker(jsonResponseFaker);
});
describe('example-block', function () {
it('example-test', async function () {
let page = await browser.newPage();
page.setRequestInterception(true);
page.on('request', requestInterceptor.intercept.bind(requestInterceptor));
await page.goto('https://www.example.org', {
waitUntil: 'networkidle0',
timeout: 3000000
});
let ajaxContent = await page.evaluate(() => {
return document.getElementById('some-id').innerHTML;
});
assert.strictEqual(ajaxContent, '<div>some static html</div>');
});
});
});