Поиск…
замечания
Nightwatch предоставляет приемные и сквозные тесты для приложений Meteor с v0.5 дней и управляет миграциями от PHP до Spark to Blaze и React; и все основные платформы непрерывной интеграции. Дополнительную помощь можно найти в:
Документация API Nightwatch
Группа пользователей Nightwatch.js Google
Travis
Travis - это оригинальная служба непрерывной интеграции, которая стала популярной в сообществе Meteor. Он прочный и надежный, уже давно имеет хостинг-сервер с открытым исходным кодом и с годами запускает сотни тысяч тестов Nightwatch.
.travis.yml
Просто .travis.yml
файл .travis.yml
в корень вашего приложения, например:
# this travis.yml file is for the leaderboard-nightwatch example, when run standalone
language: node_js
node_js:
- "0.10.38"
services:
- mongodb
sudo: required
env:
global:
- TRAVIS=true
- CONFIG_PREFIX=`npm config get prefix`
- DISPLAY=:99.0
- NODE_ENV=`travis`
matrix:
cache:
directories:
- .meteor/local/build/programs/server/assets/packages
- .meteor
before_install:
# set up the node_modules dir, so we know where it is
- "mkdir -p node_modules &"
# install nightwatch, selenium, , so we can launch nightwatch and selenium
- "meteor npm install nightwatch selenium-server-standalone-jar chromedriver"
# fire up xvfb on port :99.0
- "sh -e /etc/init.d/xvfb start"
# set the xvfb screen size to 1280x1024x16
- "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16"
# install meteor
- "curl https://install.meteor.com | /bin/sh"
# give meteor a few seconds after installing
- "sleep 10"
# setup Meteor app
- "cd webapp"
- "meteor &"
# give Meteor some time to download packages, init data, and to start
- "sleep 60"
# then run nightwatch using the chromedriver
script: "nightwatch -c .meteor/nightwatch.json"
Круг
Circle - это новейшая служба непрерывной интеграции, которая стала популярной среди метеоритов. У него есть все последние колокола и свистки, поскольку непрерывная интеграция идет. Следующий скрипт поддерживает множество новых функций, в том числе:
- скриншоты
- артефакты
- git подмодули
- обнаружение окружающей среды
- кеширование каталогов
- оптимизация параллелизма
- Скрипты npm
- непрерывное развертывание
- webhooks
.circle.yml
## Customize the test machine
machine:
# Timezone
timezone:
America/Los_Angeles # Set the timezone
# Add some environment variables
environment:
CIRCLE_ENV: test
CXX: g++-4.8
DISPLAY: :99.0
NPM_PREFIX: /home/ubuntu/nvm/v0.10.33
INITIALIZE: true
NODE_ENV: circle
## Customize checkout
checkout:
post:
#- git submodule sync
#- git submodule update --init --recursive # use submodules
general:
build_dir: webapp
artifacts:
- "./tests/nightwatch/screenshots" # relative to the build directory
## Customize dependencies
dependencies:
cache_directories:
- "~/.meteor" # relative to the user's home directory
- ~/nvm/v0.10.33/lib/node_modules/starrynight
- ~/nvm/v0.10.33/bin/starrynight
pre:
# Install Starrynight unless it is cached
- if [ ! -e ~/nvm/v0.10.33/bin/starrynight ]; then npm install -g starrynight; else echo "Starrynight seems to be cached"; fi;
# Install Meteor
- mkdir -p ${HOME}/.meteor
# If Meteor is already cached, do not need to build it again.
- if [ ! -e ${HOME}/.meteor/meteor ]; then curl https://install.meteor.com | /bin/sh; else echo "Meteor seems to be cached"; fi;
# Link the meteor executable into /usr/bin
- sudo ln -s $HOME/.meteor/meteor /usr/bin/meteor
# Check if the helloworld directory already exists, if it doesn't, create the helloworld app
# The following doesn't work, because it should be checking ${HOME}/active-entry/helloworld
# - if [ ! -e ${HOME}/helloworld ]; then meteor create --release [email protected] helloworld; else echo "helloworld app seems to be cached"; fi;
override:
#- meteor list
## Customize test commands
test:
pre:
#- starrynight fetch
#- cd packages && rm -rf temp
#- cd packages && ls -la
#- starrynight autoconfig
- meteor update --release [email protected]
- meteor npm install --save jquery bootstrap react react-dom react-router react-bootstrap react-komposer
- cat .meteor/nightwatch.json
- meteor:
background: true
- sleep 60
override:
- meteor npm run-script nightwatch
## Customize deployment commands
#deployment:
# production:
# branch: master
# commands:
# - printf "<Meteor username>\n<Meteor password>\n" | meteor deploy myapp.meteor.com
## Custom notifications
#notify:
#webhooks:
# A list of hashes representing hooks. Only the url field is supported.
#- url: https://someurl.com/hooks/circle
SauceLabs
SauceLabs - это автоматизированная тестовая платформа для предприятия. Он поддерживает как непрерывную интеграцию, кросс-браузерное тестирование, так и облако мобильных устройств. Затраты выше, чем у Travis, Circle или BrowserStack.
{
"selenium" : {
"start_process" : false,
"host" : "ondemand.saucelabs.com",
"port" : 80,
},
"test_settings" : {
"chrome_saucelabs": {
"selenium_host": "ondemand.saucelabs.com",
"selenium_port": 80,
"username": "${SAUCE_USERNAME}",
"access_key": "${SAUCE_ACCESS_KEY}",
"use_ssl": false,
"silent": true,
"output": true,
"screenshots": {
"enabled": false,
"on_failure": true,
"path": ""
},
"desiredCapabilities": {
"name": "test-example",
"browserName": "chrome"
},
"globals": {
"myGlobal": "some_sauce_global"
}
},
}
}
BrowserStack
BrowserStack использует облако устройств для кросс-браузерного тестирования. Цель состоит в том, чтобы разрешить тестирование сценариев Selenium на каждом устройстве.
{
"selenium" : {
"start_process" : false,
"host" : "hub.browserstack.com",
"port" : 80,
},
"test_settings" : {
"default" : {
"launch_url" : "http://hub.browserstack.com",
"selenium_port" : 80,
"selenium_host" : "hub.browserstack.com",
"silent": true,
"screenshots" : {
"enabled" : false,
"path" : "",
},
"desiredCapabilities": {
"browserName": "firefox",
"javascriptEnabled": true,
"acceptSslCerts": true,
"browserstack.user": "USERNAME",
"browserstack.key": "KEY"
}
}
}
}