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»