首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bitbar Cloud服务器端测试JavaScript包内容

Bitbar Cloud服务器端测试JavaScript包内容
EN

Stack Overflow用户
提问于 2019-11-19 09:03:36
回答 1查看 512关注 0票数 2

有人知道使用Javascript作为语言时用于服务器端测试运行的zip文件的内容应该是什么吗?我看过github页面(GitHub位条-示例存储库)上的python和ruby示例,但是Javascript没有任何内容,在文献资料中也是如此--只有java和python。但Javascript什么都没有。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-20 14:37:29

来自文件:

测试所需的所有文件都需要作为zip包上传到云中。此包必须包含测试文件、数据文件,并且需要有一个Shell脚本才能在包的根级启动测试执行。

和:

要使云端执行正常工作,重要的是让测试套件zip配备正确的文件。在这里,我们将通过文件和正确的组成测试拉链。最重要的是run-tests.sh文件,它负责在云中启动测试执行并安装需求。

因此,理论上,您可以在ZIP包中只拥有run-tests.sh文件。因为这是一个简单的bash脚本,所以这个脚本的功能是免费的。看看Python和Ruby的例子,这就是我的ZIP结构的样子:

代码语言:javascript
复制
.
├── package.json
├── package-lock.json
├── run-tests.sh
├── test
│   └── specs
│       └── main.js
└── wdio.conf.js

我使用过Webdriver.io实施者 --这就是为什么我有wdio.conf.jstest/specs/main.js

这就是我的run-tests.sh的样子:

代码语言:javascript
复制
#!/usr/bin/env bash

echo "Preparing..."

# Make sure there's no pre-existing `screenshots` file blocking symbolic link creation
rm -rf screenshots

# Recreate screenshots dir
mkdir screenshots

echo "Extracting tests.zip..."
unzip tests.zip

echo "Installing dependencies..."
npm install

echo "Running tests..."
./node_modules/.bin/wdio wdio.conf.js

我的main.js (我首先使用了bitbar-sample-app.apk和测试方法):

代码语言:javascript
复制
describe('Bitbar Sample App', () => {
    it('Should radio button should be visible ', async () => {
        let el = await $('//android.widget.RadioButton[@text="Buy 101 devices"]');
        let visible = await el.isDisplayed();
        visible.should.be.true;
    });

    it('Should show failure page', async () => {
        let el;

        console.log("view1: Clicking button - 'Buy 101 devices'");
        el = await $('//android.widget.RadioButton[@text="Buy 101 devices"]');
        el.click();

        console.log("view1: Typing in textfield[0]: Bitbar user");
        el = await $('//android.widget.EditText[@resource-id="com.bitbar.testdroid:id/editText1"]');
        el.setValue('Bitbar user');

        driver.hideKeyboard();
        console.log("view1: Taking screenshot screenshot1.png");
        await takeScreenshot('screenshot1');

        console.log("view1: Clicking button Answer");
        el = await $('//android.widget.Button[@text="Answer"]');
        el.click();

        console.log("view2: Taking screenshot screenshot2.png");
        await takeScreenshot('screenshot2');

        el = await $('//android.widget.TextView[@text="Wrong Answer!"]');
        let txt = await el.getText();
        txt.should.be.equal('Wrong Answer!');
    });

});

wdio.conf.js (看看before钩子):

代码语言:javascript
复制
const path = require('path');

exports.config = {
    runner: 'local',

    framework: 'mocha',
    mochaOpts: {
        ui: 'bdd',
        timeout: 60000
    },

    logLevel: 'silent',
    deprecationWarnings: true,

    bail: 0,
    waitforTimeout: 10000,
    connectionRetryTimeout: 90000,
    connectionRetryCount: 3,

    reporters: [
        'spec',
        [
            'junit', {
                outputDir: './',
                outputFileFormat: () => {
                    return 'TEST-all.xml';
                }
            }
        ]
    ],

    host: '127.0.0.1',
    port: 4723,
    path:  '/wd/hub',

    services: ['appium'],
    appium: {
        command: 'appium',
        logPath : './',
    },

    specs: [
        './test/specs/**/*.js'
    ],

    capabilities: [{
        platformName: 'Android',
        maxInstances: 1,

        'appium:deviceName': 'Android device',
        'appium:automationName': 'UiAutomator2',
        'appium:app': path.resolve('application.apk'),
        'appium:appActivity': '.BitbarSampleApplicationActivity',
        'appium:appPackage': 'com.bitbar.testdroid',
        'appium:newCommandTimeout': 240
    }],

    before: function() {
        const chai = require('chai');
        global.expect = chai.expect;
        chai.should();

        const fs = require('fs');

        global.takeScreenshot = async (fileName) => {
            let screenshot = await driver.takeScreenshot();
            screenshot = screenshot.replace(/^data:image\/png;base64,/, "")
            let filePath = path.resolve(`./screenshots/${fileName}.png`);
            fs.writeFileSync(filePath, screenshot, 'base64');
        };

    }
}

最后,但并非最不重要的是package.json

代码语言:javascript
复制
{
  "name": "appium-server-side-example",
  "version": "1.0.0",
  "description": "Bitbar Cloud Appium Server Side Test Example",
  "author": "Marek Sierociński <marek.sierocinski@smartbear.com>",
  "license": "ISC",
  "dependencies": {
    "@wdio/appium-service": "^5.16.5",
    "@wdio/cli": "^5.16.7",
    "@wdio/junit-reporter": "^5.15.5",
    "@wdio/local-runner": "^5.16.7",
    "@wdio/mocha-framework": "^5.16.5",
    "@wdio/spec-reporter": "^5.16.5",
    "@wdio/sync": "^5.16.5",
    "chai": "^4.2.0"
  }
}

如您所见,我使用了chai (因为我想使用BDD方法)和junit-reporter (因为Bitbar是Java的怪胎,您可以从示例中猜到云正在读取JUnit文件来读取测试方法)。

对我来说很管用:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58930168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档