1 | import fs from 'fs'
|
2 | import path from 'path'
|
3 | import del from 'del'
|
4 | import Launcher from 'webdriverio/build/lib/launcher'
|
5 | import cheerio from 'cheerio'
|
6 |
|
7 | const resultsDir = path.join(__dirname, '../.allure-results')
|
8 |
|
9 | export function getResults () {
|
10 | return getResultFiles('xml').map((file) => {
|
11 | return cheerio.load(fs.readFileSync(path.join(resultsDir, file), 'utf-8'))
|
12 | })
|
13 | }
|
14 |
|
15 | export function getResultFiles (patterns) {
|
16 | if (!Array.isArray(patterns)) {
|
17 | patterns = [patterns]
|
18 | }
|
19 | return fs.readdirSync(resultsDir).filter((file) =>
|
20 | patterns.some(pattern => file.endsWith('.' + pattern)))
|
21 | }
|
22 |
|
23 | export function clean () {
|
24 | return del(resultsDir)
|
25 | }
|
26 |
|
27 | export function run (specs) {
|
28 | disableOutput()
|
29 |
|
30 | const launcher = new Launcher('./test/fixtures/wdio.conf.js', {
|
31 | specs: specs.map(spec => `./test/fixtures/specs/${spec}.js`)
|
32 | })
|
33 |
|
34 | return launcher.run().then(() => {
|
35 | enableOutput()
|
36 | return getResults()
|
37 | })
|
38 | }
|
39 |
|
40 | let logs, originalConsole
|
41 |
|
42 | function disableOutput () {
|
43 | if (process.env.FULL_OUTPUT) {
|
44 | return
|
45 | }
|
46 | const mockLog = (type) => (...message) => {
|
47 | logs[type].push(message.join(' '))
|
48 | }
|
49 | logs = {
|
50 | log: [],
|
51 | warn: [],
|
52 | error: []
|
53 | }
|
54 | originalConsole = {
|
55 | log: console.log,
|
56 | warn: console.warn,
|
57 | error: console.error
|
58 | }
|
59 | console.log = mockLog('log')
|
60 | console.warn = mockLog('warn')
|
61 | console.error = mockLog('error')
|
62 | }
|
63 |
|
64 | function enableOutput () {
|
65 | if (process.env.FULL_OUTPUT) {
|
66 | return
|
67 | }
|
68 | console.log = originalConsole.log
|
69 | console.warn = originalConsole.warn
|
70 | console.error = originalConsole.error
|
71 | }
|