UNPKG

1.84 kBJavaScriptView Raw
1"use strict";
2
3const express = require('express');
4const expect = require('chai').expect;
5const Browser = require('puppeteer');
6
7let browser = null;
8let page = null;
9
10const PORT = 3333;
11const PARSE_TIMEOUT = 1000;
12
13describe('Browser', function() {
14 if (process.env.SKIP_BROWSER_TESTS) {
15 console.log('skipping browser tests');
16 return;
17 }
18
19 before(function(done) {
20 this.timeout(5000);
21 let app = express();
22 app.use(express.static(__dirname));
23 app.use('/dist', express.static(__dirname + '/../dist'));
24 app.listen(PORT, err => {
25 if (err) return done(err);
26 Browser.launch({args: ['--no-sandbox']})
27 .then(b => browser = b)
28 .then(_ => browser.newPage())
29 .then(p => {
30 page = p;
31 return page.goto('http://localhost:3333/index.html');
32 })
33 .then(_ => done())
34 .catch(e => done(e));
35 });
36 });
37
38 after(() => browser.close());
39
40 it('should have window.RSSParser', () => {
41 return page.evaluate(() => {
42 return typeof window.RSSParser;
43 }).then(type => {
44 expect(type).to.equal('function');
45 })
46 });
47
48 it('should parse reddit', function() {
49 this.timeout(PARSE_TIMEOUT + 1000);
50 return page.evaluate(() => {
51 var parser = new RSSParser();
52 parser.parseURL('http://localhost:3333/input/reddit.rss', function(err, data) {
53 window.error = err;
54 window.reddit = data;
55 })
56 })
57 .then(_ => {
58 return new Promise(resolve => setTimeout(resolve, PARSE_TIMEOUT))
59 })
60 .then(_ => page.evaluate(() => {
61 return window.error;
62 }))
63 .then(err => {
64 expect(err).to.equal(null);
65 })
66 .then(_ => page.evaluate(() => {
67 return window.reddit.title;
68 }))
69 .then(title => {
70 expect(title).to.equal('reddit: the front page of the internet');
71 })
72 })
73})