diff --git a/.travis.yml b/.travis.yml index e3f518ac5..6277afcf2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,13 @@ language: node_js node_js: - - "6" +- '6' +addons: + sauce_connect: + username: box-content-preview + jwt: + secure: EPjmiionirVVkbFbp9r4DjMLMcfmdj9Sq8UiMcIGGf5gQk0cV5sgJpDHUDlKhFL3na8FkYf27qadaaJHG9Lr7o1V6IN1tsLamD9kdQjeG1pUSZbyMoMbja9i8CY0/MnQPaPL8UBXbcPrJoBwPNp6PphZ1PtBW68oXale3Xdfd7JMyTtm8f6G40pxpDl50dKI2VZHKKrfWakFkK2DMM73vJScxCrlyJEDc+wSJi2Mr/lrZc/QYy3ug3BGq1S6vV6wsOCk/4Jx+W1hvqK0QBgIytv1XzypqDFJ0OiTiOccsbwvEUHOepQl0EQxBZtM9PO//SBMFc2TqAhldta37JFrEcOEtqrsHwqVELzRMJm9lDSSD+TSj/tri6Kevy311gboZsJh2T3Znkq2h5Zpx8ImbgZCKvQyn8bTSp9MOkb9bGt1tUkZ1LEk3Pj0PUEjFZMnAsT/fLg2EGdXRQWb1W/ZyknoNPfvsU5Po8obQ/AOlKMqaMM7YiGQWruL7Esml0XaiL9H1TSUwmtyAnAU+Q1eYv7II7SnQmVxcgILX7D7nAO82/jP2f12fszEOlgivLr0AS9iAMLcNsrTfSO2p60MESmc/2ZVGjIagNEaGohfb9AI5d0tezU6+GWijuRijVqn1x2rLbSXOV7c3G9yrJpGTru9WD3n/ekgVvg/0nanBpU= +before_script: +- python -m SimpleHTTPServer & +- sleep 2 script: yarn run ci cache: yarn diff --git a/functional-tests/base-test.js b/functional-tests/base-test.js new file mode 100644 index 000000000..1d0b60262 --- /dev/null +++ b/functional-tests/base-test.js @@ -0,0 +1,39 @@ +const webdriver = require('selenium-webdriver'); +const expect = require('chai').expect; + +describe('Base Test', () => { + before(() => { + if (process.env.SAUCE_USERNAME && process.env.SAUCE_ACCESS_KEY) { + this.browser = new webdriver.Builder() + .usingServer(`http://${process.env.SAUCE_USERNAME}:${process.env.SAUCE_ACCESS_KEY}@ondemand.saucelabs.com:80/wd/hub`) + .withCapabilities({ + 'tunnel-identifier': process.env.TRAVIS_JOB_NUMBER, + build: process.env.TRAVIS_BUILD_NUMBER, + username: process.env.SAUCE_USERNAME, + accessKey: process.env.SAUCE_ACCESS_KEY, + browserName: 'chrome' + }).build(); + } else { + this.browser = new webdriver.Builder() + .withCapabilities({ + browserName: 'chrome' + }).build(); + } + }); + + beforeEach(() => { + return this.browser.get('http://localhost:8000/functional-tests/index.html'); + }); + + after(() => { + return this.browser.quit(); + }); + + it('should load a file', () => { + return this.browser.wait(webdriver.until.elementLocated(webdriver.By.className('bp-loaded')), 5000).then((element) => { + this.browser.wait(webdriver.until.elementIsVisible(element), 5000).then((el) => { + expect(el).to.not.equal(undefined); + }); + }); + }); +}); diff --git a/functional-tests/index.html b/functional-tests/index.html new file mode 100644 index 000000000..e52db7191 --- /dev/null +++ b/functional-tests/index.html @@ -0,0 +1,27 @@ +
+ + + + + + + + + + diff --git a/package.json b/package.json index f9f74056f..d151bbf86 100644 --- a/package.json +++ b/package.json @@ -85,6 +85,7 @@ "react-dom": "^15.6.1", "react-virtualized": "^9.9.0", "sass-loader": "^6.0.6", + "selenium-webdriver": "^3.5.0", "sinon": "1.17.7", "sinon-chai": "2.8.0", "sinon-stub-promise": "^4.0.0", @@ -101,11 +102,12 @@ "build": "yarn run clean && yarn run build-rb && yarn run lint && yarn run dev", "build-ci": "./node_modules/.bin/webpack --progress --colors --config build/webpack.config.js", "build-rb": "mojito-rb-gen -s src/i18n -o src/i18n/json -b en-US.properties", - "ci": "yarn run clean && yarn run build-rb && yarn run lint && yarn run test && yarn run build-ci", + "ci": "yarn run clean && yarn run build-rb && yarn run lint && yarn run test && yarn run build-ci && yarn run functional-tests", "clean": "rm -rf dist && rm -rf reports/coverage && rm -rf src/i18n/json", "commitmsg": "conventional-changelog-lint -e", "debug": "NODE_ENV=test ./node_modules/.bin/karma start build/karma.conf.js --no-single-run --auto-watch", "dev": "BABEL_ENV=dev NODE_ENV=dev ./node_modules/.bin/webpack --progress --colors --config build/webpack.config.js", + "functional-tests": "node ./node_modules/mocha/bin/mocha ./functional-tests/ --timeout 10000", "lint": "NODE_ENV=dev ./node_modules/.bin/eslint src/lib && ./node_modules/.bin/stylelint 'src/lib/**/*.scss'", "precommit": "lint-staged", "prepush": "yarn run lint",