Невозможно отладить Typescript для Транспортира в VSCode с Узлом 8.x - PullRequest
0 голосов
/ 05 января 2019

Я не могу отладить Typescript (который компилируется в JS для Protractor), когда на Node 8.x. 7.x использовал browser.pause (), но это больше не вариант, поскольку он устарел.

Я использую последнюю версию VSCode.

package.json

{
  "name": "bond",
  "version": "1.0.0",
  "description": "bond e2e automation tests",
  "author": "bond",
  "main": "./config.ts",
  "license": "bond",
  "scripts": {
    "webdriver-update": "npx webdriver-manager update",
    "prestart": "npm run build",
    "build": "tsc",
    "tsc": "tsc",
    "test": "npm run tsc && protractor tmp/config.js"
  },
  "dependencies": {
    "@types/jasmine": "^2.8.9",
    "@types/jasminewd2": "^2.0.4",
    "@types/node": "^10.12.0",
    "adm-zip": "0.4.7",
    "chance": "^1.0.16",
    "chromedriver": "^2.41",
    "colors": "1.1.2",
    "geckodriver": "1.8.1",
    "jasmine": "^2.99.0",
    "jasmine-reporters": "2.2.1",
    "jasmine-spec-reporter": "4.2.1",
    "mocha": "^5.2.0",
    "protractor": "^5.4.1",
    "protractor-jasmine2-screenshot-reporter": "0.4.0",
    "selenium-server": "^3.13.0",
    "selenium-webdriver": "^4.0.0-alpha.1",
    "ts-node": "^7.0.1",
    "webdriver-manager": "^12.0.6",
    "xml2js": "~0.4.19"
  },
  "devDependencies": {
    "@types/jasmine": "^2.8.9",
    "@types/jasminewd2": "^2.0.4",
    "protractor-beautiful-reporter": "^1.2.6",
    "ts-node": "^7.0.1",
    "typescript": "^2.9.2",
    "yarn": "^1.10.1"
  }
}

launch.json

{
    "version": "0.2.0",
    "configurations": [

        {
        "type": "node",
        "request": "launch",
        "name": "XPIA",
        "stopOnEntry": false, //debug exp
        "program": "${workspaceFolder}\\config.ts",
        // "program": "${workspaceRoot}\\tmp\\",
        "preLaunchTask": "npm: build",
        "sourceMaps": true,
        "smartStep": true,
        "internalConsoleOptions": "openOnSessionStart",
        "protocol": "auto",
        "args": ["${workspaceRoot}/config.js"],
        "outFiles": [
            "${workspaceFolder}/tmp/**/*.js"
        ]
    }]
}

Это просто убивает большую часть моего времени, так как я часто переключаюсь на Node 7.x и использую неэффективный browser.pause ()

Редактировать 1:

Согласно приведенным ниже советам, из видео я использую Node 8.x, Selenium Promise Manager имеет значение false и нацеливается на es2017, но получил эту ошибку.

Chrome Dev Tools Error

Мой соблюдаемый код находится в папке tmp, а не node_modules / protractor / bin

node inspect and folder structure

config.ts

import { Config } from 'protractor';
import { Environment } from './environment';
import { StandardSetup } from './Standard-setup';

var HtmlReporter = require('protractor-beautiful-reporter');

export let config: Config = {
    framework: 'jasmine2',
    SELENIUM_PROMISE_MANAGER: false,
    directConnect: true,

    capabilities: {
        'browserName': (process.env.TEST_BROWSER_NAME || 'chrome'),
        'version': (process.env.TEST_BROWSER_VERSION || 'ANY'),
        'shardTestFiles': true,
        'unexpectedAlertBehaviour': 'accept',
        'loggingPrefs': {
            'performance': 'ALL',
        },

        'chromeOptions': {
            'args': ['--disable-notifications', '--disable-infobars', '--start-maximized'],
            prefs: {
                download: {
                    'prompt_for_download': false,
                    'directory_upgrade': true,
                }
            }
        },
    },

    specs: ['specs/proj/*test-spec.js'],
    seleniumAddress: 'http://10.10.113.153:4444/wd/hub',

    jasmineNodeOpts: {
        isVerbose: true,
        showColors: true,
        defaultTimeoutInterval: 999999, //longer timeout for debugging
        print: function () { }
    },

    /**
    *  @returns logs to console on page load 
    */
    async onPrepare(): Promise<void> {
        let setup = new StandardSetup(),
            env = new Environment();

        setup.setSpecReporter();
        await setup.setjasmineReporters();


        jasmine.getEnv().addReporter(new HtmlReporter({
            baseDirectory: 'reports/screenshots'
         }).getJasmine2Reporter());

         return await env.setGlobals();
    }
};

Редактировать 2:

Команда, которую я использую:

node --inspect-brk ./tmp/config.js

enter image description here

Теперь я могу видеть файл конфигурации в инструментах разработчика. Однако, когда я нажимаю F8, сценарий не останавливается в «отладчике» в spec-файле. Все, что я вижу, это:

enter image description here

Для отладки на VSCode (F10) я изменил launch.json:

"program": "${workspaceRoot}\\tmp\\config.js",

Опять я попал в конфиг и не попал в спецификацию.

Куда я иду не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...