簡體   English   中英

更改 nativescript 端到端測試的端口

[英]Change port for nativescript end to end testing

我正在使用 NativeScript 6.1.2 和 Appium 來使用 Android 仿真器運行端到端測試。 我需要在與默認端口 (5546) 不同的端口上運行 appium 測試,因為它與同一台機器上嘗試執行相同測試的另一個用戶發生沖突。

我在 appium.capabilities.json 文件中設置了具有以下功能的 Android 虛擬設備;

"samsung": {
    "platformName": "Android",
    "platformVersion": "7.0",
    "deviceName": "samsung_galaxy_s8",
    "avd": "samsung_galaxy_s8",
    "lt": 60000,
    "newCommandTimeout": 720,
    "noReset": false,
    "fullReset": false,
    "app": ""
}

當我開始測試時;

npm run e2e -- --runType samsung

我得到以下信息;

Executing "/bin/ps aux | grep -ie 'sdk/emulator/qemu' | grep -ie 'samsung_galaxy_s8' | grep -v grep  | xargs kill -9"
No matching processes to kill!
Starting emulator with options: -avd samsung_galaxy_s8 -port 5546 ["-no-audio","-no-boot-anim","-wipe-data","-no-snapshot-load","-no-snapshot-save"]
Booting emulator ...
Check if "emulator-5546" is running.
Check has "passed".
Check if emulator is responding
Emulator is booted!
Started device:   {"name":"samsung_galaxy_s8","apiLevel":"24","releaseVersion":"7.0","platform":"android","type":"emulator","status":"booted","token":"5546","pid":26944,"startedAt":1572236203683,"config":{"density":1.6,"offsetPixels":25}}

注意:“-avd samsung_galaxy_s8 -port 5546”行是我想要更改的。

更新

我發現 appium 在哪里啟動進程,並且端口是通過使用模擬器 object 上的屬性“token”設置的。

這在 /node_modules/mobile-devices-controller/lib/android-controller.js 文件中;

static startEmulatorProcess(emulator, logPath, options) {
    return __awaiter(this, void 0, void 0, function* () {
        options = options || ["-no-audio", "-no-snapshot-save", "-no-boot-anim"];
        if (logPath) {
            options.push(` > ${logPath} 2 >& 1`);
        }
        utils_1.logInfo(`Starting emulator with options: -avd ${emulator.name} -port ${emulator.token}`, options);
        const process = child_process_1.spawn(AndroidController.EMULATOR, [" -avd ", emulator.name, " -port ", emulator.token, ...options], {
            shell: true,
            detached: false,
        });
        process.stdout.on("data", (data) => {
            console.log(data.toString());
        });
        process.stdout.on("error", (data) => {
            console.log(data.toString());
        });
        emulator.pid = process.pid;
        emulator.process = process;
        return emulator;
    });
}

我在哪里設置這個令牌? 當前設置為 5546。

更新:我根據 WiRa 的回答使用的完整命令

啟動模擬器

${ANDROID_HOME}emulator/emulator -avd samsung_galaxy_s8 -gpu guest -no-audio -verbose -port 3500

開始 e2e 測試

DEVICE_TOKEN=3500 npm run e2e -- --runType device.samsung

注意:由於模擬器不斷崩潰,我還使用了循環

while true; do pkill -f android; sleep 2; tnsa &; em &> ~/emulator.log; done

您可以將環境變量“DEVICE_TOKEN”設置為所需的端口號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM