From 532a080ac904c3bb9c5b1770dfa712eb0366356f Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sat, 8 Sep 2018 00:10:37 +0200 Subject: [PATCH 1/6] Add more E2E tests --- e2e/src/app.e2e-spec.ts | 10 ++++++++++ e2e/src/app.po.ts | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts index 0edff10..f7e057f 100644 --- a/e2e/src/app.e2e-spec.ts +++ b/e2e/src/app.e2e-spec.ts @@ -28,4 +28,14 @@ describe('convertorizr App', () => { expect(content).toEqual('SGVsbG8sIFdvcmxkIQ=='); }); }); + + it('should display an error message if the conversion fails', () => { + page.navigateTo() + .then(() => page.setInputFieldContent(0, 'Oh noes!')) + .then(() => page.selectConverterOption(0, 'Decode Base 64')) + .then(() => page.getErrorMessage(0)) + .then((content: string) => { + expect(content).toEqual('Could not decode base64 string. Maybe corrupt input?'); + }); + }); }); diff --git a/e2e/src/app.po.ts b/e2e/src/app.po.ts index da1d885..b659e5f 100644 --- a/e2e/src/app.po.ts +++ b/e2e/src/app.po.ts @@ -41,4 +41,13 @@ export class ConvertorizrPage { .element(by.cssContainingText('option', optionName)) .click(); } + + getErrorMessage(index: number): promise.Promise { + return element + .all(by.css('app-root div.inputwrapper')) + .get(index) + .element(by.css('app-error-message div.errormessage')) + .getWebElement() + .getText(); + } } From 20737a6a6861e1a881b775825fa10eae7ab5dc8c Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sat, 8 Sep 2018 00:14:32 +0200 Subject: [PATCH 2/6] Add protractor config --- .gitignore | 2 +- e2e/protractor.conf.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 e2e/protractor.conf.js diff --git a/.gitignore b/.gitignore index 13a8ce0..e322123 100644 --- a/.gitignore +++ b/.gitignore @@ -35,7 +35,7 @@ testem.log /typings # e2e -/e2e/*.js +# /e2e/*.js /e2e/*.map # System Files diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js new file mode 100644 index 0000000..1208c44 --- /dev/null +++ b/e2e/protractor.conf.js @@ -0,0 +1,31 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome', + chromeOptions: { + args: [ "--headless", "--disable-gpu", "--no-sandbox" ] + } + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.e2e.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; From 95aea3b4551e095d96b365a4ddee1a7ffbeb8460 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sat, 8 Sep 2018 00:15:39 +0200 Subject: [PATCH 3/6] Try to run E2E tests on CI --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index b430e96..a571020 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,4 +4,5 @@ pipeline: commands: - npm install - npm run test:ci + - npm run e2e - npm run build-prod From f2a288a3dc7500ae73b393e27fe5e28236291361 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sat, 8 Sep 2018 01:21:07 +0200 Subject: [PATCH 4/6] Use fritteli's docker image with latest chrome version --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index a571020..4a719dc 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,6 +1,6 @@ pipeline: build: - image: tamlyn/headless-nodejs + image: fritteli/headless-nodejs commands: - npm install - npm run test:ci From 49301621ab79afed59da556d5eee9d43b7d3b8f3 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sat, 8 Sep 2018 01:21:46 +0200 Subject: [PATCH 5/6] Use version 1 of docker image --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 4a719dc..36a3ded 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,6 +1,6 @@ pipeline: build: - image: fritteli/headless-nodejs + image: fritteli/headless-nodejs:1 commands: - npm install - npm run test:ci From 8eaf021fc58854f26d25a3e638913ee11fd57909 Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Sat, 8 Sep 2018 02:10:13 +0200 Subject: [PATCH 6/6] Use latest docker base image --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 36a3ded..5915355 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,6 +1,6 @@ pipeline: build: - image: fritteli/headless-nodejs:1 + image: fritteli/headless-nodejs:1.1.0 commands: - npm install - npm run test:ci