Рубрики
Uncategorized

Nighwatchjs и Действия GitHub

Nightwatchjs nightwatch.js — это интегрированная, простая в использовании концептуального тестирования для … Теги от тестирования, GitHub, узла, CICD.

Nightwatchjs.

NightWatch.js — это интегрированная, простая в использовании концептуального решения для тестирования для веб-приложений и веб-сайтов, написанных в Node.js. Он использует W3C Webdriver API для привода браузеров для выполнения команд и утверждений на элементах DOM.

Действия GitHub

Действия GitHub позволяют легко автоматизировать все ваши рабочие процессы программного обеспечения, теперь с CI/CD World-Class. Вы можете создавать, тестировать и развернуть свой код прямо из GitHub.

Действия GitHub доступны с GitHub Free, Github Pro, Github бесплатно для организаций, команды GitHub, Github Enterprise Cloud, Github Enterprise Server и GitHub AE. Действия GitHub недоступны для частных репозиториев, принадлежащих счетами с использованием устаревших планов по репозитории. Для получения дополнительной информации см. « продукты GitHub ».

CI Использование действий GitHub предлагает рабочие процессы, которые могут построить код в вашем хранилище и запустить тесты. Рабочие процессы могут работать на размещенных виртуальных машинах GitHub, или на машинах, которые вы принимаете сами.

Настройка CI/CD

На данный момент я предполагаю, что у вас рабочий проект для тестирования и настройки CI для. Я использую этот проект для демонстрации Переезд Todo Отказ Это приложение Django и тесты написаны в Nightwatchjs.

Теперь, давайте сыграем наши конфигурации CI:

  • Во-первых, мы выбирали ОС для CI Build
  • Во-вторых, мы должны установить зависимости внутри сборки
  • Далее мы должны начать сервер для тестирования
  • Наконец, мы должны провести тесты и сделать его пройденным.

WebDriver

Лично я не предлагаю использовать файлы JAR для Selenium. Скорее используйте Docker, чтобы начать селен как:

docker run --rm -d --network="host" --name selenium -p4444:4444 selenium/standalone-chrome

В качестве альтернативы, вам не нужно ничего не беспокоить о запуске и остановке сервера Selenium. Использование пакета NPM управляет всем этим.

  • Есть следующие пакеты в вашем packages.json файл:
  "dependencies": {
    "@cucumber/cucumber": "^7.3.0",
    "axios": "^0.21.1",
    "chromedriver": "^91.0.0",
    "cucumber": ">=6.0.5",
    "cucumber-pretty": "^6.0.0",
    "geckodriver": "^2.0.0",
    "iedriver": "^3.150.1",
    "nightwatch": "^1.3.4",
    "nightwatch-api": "^3.0.1",
    "selenium-server": "^3.141.59"
  },
  • Настроить Notewatch:
module.exports = {
  src_folders: ["tests"],
  // custom_commands_path: ["test/custom_commands"],
  page_objects_path: "./tests/acceptance/pageObjects",

  test_settings: {
    default: {
      launch_url: process.env.BASE_URL,
    },
    selenium: {
      selenium: {
        start_process: true,
        server_path: require("selenium-server").path,
        port: 4444,
        cli_args: {
          "webdriver.gecko.driver": require("geckodriver").path,
          "webdriver.chrome.driver": require("chromedriver").path,
        },
      },
      webdriver: {
        start_process: false,
      },
    },

    chrome: {
      extends: "selenium",
      desiredCapabilities: {
        browserName: "chrome",
        chromeOptions: {
          args: ["--headless", "--no-sandbox", "--disable-gpu"],
          w3c: false,
        },
      },
    },

    firefox: {
      extends: "selenium",
      desiredCapabilities: {
        browserName: "firefox",
        "moz:firefoxOptions": {
          args: ["--headless"],
        },
      },
    },
  },
};
  • Настроить CuCumber.conf.js.
const { setDefaultTimeout, After, Before, BeforeAll, AfterAll } = require("cucumber");
const { createSession, closeSession, startWebDriver, stopWebDriver } = require("nightwatch-api");
const axios = require("axios").default;

setDefaultTimeout(60000);
const availableBrowsers = ["chrome", "firefox"];

const browser = process.env.BROWSER || "chrome";
if (!availableBrowsers.includes(browser)) {
    throw new Error(
    '\nInvalid browser selected.\n' +
    'Available browsers: ' +
    ${availableBrowsers.join(", ")} + '\n'
  );
}

BeforeAll(async () => {
  await startWebDriver({ env: browser });
});

Before(async () => {
  await createSession({ env: browser });
});

After(async () => {
  await closeSession();
});

AfterAll(async () => {
  await stopWebDriver();
});
  • Предполагается, что тесты файлов находятся внутри тесты каталог, теперь добавьте скрипт, чтобы запустить тесты внутри вашего package.json файл:
"scripts": {
  "test:e2e": "cucumber-js --require cucumber.conf.js --require tests/acceptance/stepDefinitions --format node_modules/cucumber-pretty"
}

Настройка рабочего процесса

Сначала коснитесь файла внутри .Github/Workflows Наименование Main.yml Отказ GitHub использует этот файл в качестве файла конфигурации для CI Build.

Теперь, как наш план позволяет настроить нашу CI:

name: CI

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

  workflow_dispatch:

jobs:
  build:
    name: webUi-${{ matrix.browser }}
    runs-on: ubuntu-latest

    strategy:
      matrix:
        browser: ["chrome", "firefox"]

    steps:
      - uses: actions/checkout@v2

      - name: yarn-install
        run: yarn install

      - name: pip-install
        run: pip install -r requirements.txt

      - name: setup-server
        run: |
          make migrate
          make create-admin
          make serve &

      - name: e2e-test
        env:
          BROWSER: ${{ matrix.browser }}
        run: |
          yarn test:e2e

Проверьте свои сборки

Нажмите изменения, добавляющие Main.yml к вашему репозитории и перейти к Действия Вкладка в вашем репозитории вы можете увидеть начальную сборку. Осмотрите его, почините его все свои.

Что я люблю о Github CI

  • Вы можете запустить Sudo Команды легко
  • Вы можете легко использовать контейнеры Docker
  • Вы можете трубопроводные тесты на несколько параллельных сборки

Оригинал: «https://dev.to/kiranparajuli589/nightwatchjs-and-github-actions-46mk»