自动化 End-End 测试 Nightwatch.js 与 BrowserStack

前一篇提到可以更改 session name 也可以标注 pass/fail

接着就可以将昨天提到的的设定加入到 afterEach

如此一来就可以在测项结束後,在 browserstack 上标注 pass/fail

// session.js

const setSessionStatus = async (sessionId, GUID, status) => {
  const option = {
    url: `https://api.browserstack.com/automate/sessions/${sessionId}.json`,
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json',
    },
    auth: {
      user: process.env.BROWSERSTACK_USER,
      password: process.env.BROWSERSTACK_PASSWORD,
    },
    body: `{"status": "${status}","reason":""}`,
  };
  
  request(option, function(error, response, body) {
    if (!error && response.statusCode == 200) {
      return body;
    }
    console.log('[session.js] SET Session status Fail');
    console.log(error);
    return error;
  });
}

并加入 afterEach

// test.js

const { setSessionStatus } = require('session');

afterEach: function(browser, done) {
    browser.end(() => done());

    let status = `passed`;
    if (browser.currentTest.results.failed > 0) {
      status = `failed`;
    }

    const { sessionId, GUID } = sessionQueue.shift();

    setSessionStatus(sessionId, GUID, status);
}

不过 browserstack 无法把 sessionId 传到 afterEach 里面

因此会需要在每条测试项中加入 sessionID

// test.js

'testing website': function(browser) {
    sessionQueue.push({ sessionId: browser.sessionId });
    browser.verify...
}

<<:  Day 24 bert 文字情感分类-3

>>:  Day24 - this&Object Prototypes Ch3 Objects - Review

Day 21. 条件渲染 – v-if、v-show

今天来讲条件渲染(Conditional Rendering),也就是可以依照条件变化改变渲染元素的...

Android Studio - 心得

经过这三十天的每天发文 每天督促自己学习新的东西并记录下来 没想到已经坚持到最後一天了!! 虽然其实...

AE骇客萤幕打字效果3-Day12

接续昨天的练习 1.新增一个Adjustment Layer 2.套上Optics Compensa...

【D30】结尾:佳肴上桌

本日程序码使用:d30.py 这边结合第29天的下单功能,以及第28天的制作组合单,让这个组合单的...

[Day29] Room创出来就好吗?

当然要拿来用啊 於是我想利用Room 当我储存每个平台帐号密码的资料库 并且要可以浏览每个平台 这个...