all repos — caroster @ ec8b25be9fb27eea5119a512c5b62bc6166a5354

[Octree] Group carpool to your event https://caroster.io

e2e/hooks/index.js (view raw)

 1'use strict';
 2
 3/* global browser */
 4
 5const cmds = require('wdio-screen-commands');
 6const slugify = require('slugify');
 7
 8const {Scene} = require('../test/pages/utils/Scene');
 9/* eslint-disable jsdoc/valid-types */
10/** @type WebdriverIO.HookFunctions */
11const config = {
12  before: async () => {
13    global.uuidv4 = require('uuid').v4;
14    global.SCENE = Scene;
15    browser.addCommand('saveScreenshotByName', async screenshotName => {
16      console.log('New screen shots');
17      if (Scene.feature) {
18        Scene.screenShotCount++;
19        screenshotName =
20          slugify(Scene.feature.document.feature.name) +
21          '_' +
22          (Scene.screenShotCount < 10
23            ? '0' + Scene.screenShotCount
24            : Scene.screenShotCount) +
25          ' ' +
26          screenshotName;
27      }
28      await cmds.saveScreenshotByName(screenshotName);
29      console.log('screenshot ', screenshotName);
30    });
31    if (browser.config.appium)
32      await browser.updateSettings(browser.config.appium);
33    if (browser.config.maximizeWindow) await browser.maximizeWindow();
34    console.log('Ready to spec');
35  },
36  beforeFeature: async function (uri, feature, scenarios) {
37    Scene.feature = feature;
38    Scene.screenShotCount = 0;
39    const name = slugify(feature.document.feature.name);
40    const test = {
41      parent: 'Feat',
42      uid: name,
43      title: name,
44      state: 'passed',
45      type: 'test',
46    };
47    console.log('start recording');
48    await cmds.startScreenRecording(test);
49
50    const oldBaseURL = browser.options.baseUrl;
51    browser.options.baseUrl = 'https://caroster-page.dev.octr.ee';
52    await browser.url(`/${feature.uri}.txt`);
53    console.log('browse ', browser.options.baseUrl, `/${feature.uri}`);
54    browser.options.baseUrl = oldBaseURL;
55    await new Promise(resolve => setTimeout(resolve, 5000));
56  },
57  afterFeature: async function (uri, feature, scenarios) {
58    const name = slugify(feature.document.feature.name);
59    const test = {
60      parent: 'Feat',
61      uid: name,
62      title: name,
63      state: 'passed',
64      type: 'test',
65    };
66    console.log('stop recording');
67
68    await cmds.stopScreenRecording(test, {
69      error: undefined,
70      result: 0,
71      duration: undefined,
72      passed: scenarios.length,
73      retries: 0,
74    });
75    Scene.feature = undefined;
76  },
77};
78
79module.exports = config;