diff --git a/.gitignore b/.gitignore index 2fc7e6a605d472b6a38cee6ad51a0d3c6593dddd..cf82de486f605007f5db8a324f7ab160327de993 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /node_modules -/reports-tmp \ No newline at end of file +/reports-tmp +/environment.json \ No newline at end of file diff --git a/helpers/WindowManager.js b/helpers/WindowManager.js new file mode 100644 index 0000000000000000000000000000000000000000..b82a58cdeed81cfecb4f9bcda41df02ad2ff31fd --- /dev/null +++ b/helpers/WindowManager.js @@ -0,0 +1,10 @@ +class WindowManager { + switchToNextTab(closeCurrentTab) { + browser.getAllWindowHandles().then(handles => { + if (closeCurrentTab) browser.driver.close(); + browser.driver.switchTo().window(handles[1]); + }); + } +} + +module.exports = new WindowManager(); diff --git a/package-lock.json b/package-lock.json index ee0e06d863de580017a626ca601d6f950d4ff48c..92e770050138a42868007ae4d73a222d58a44fb7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,18 +8,16 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", - "dev": true, "requires": { "@babel/highlight": "^7.0.0" } }, "@babel/generator": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.5.tgz", - "integrity": "sha512-IO31r62xfMI+wBJVmgx0JR9ZOHty8HkoYpQAjRWUGG9vykBTlGHdArZ8zoFtpUu2gs17K7qTl/TtPpiSi6t+MA==", - "dev": true, + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.2.tgz", + "integrity": "sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==", "requires": { - "@babel/types": "^7.1.5", + "@babel/types": "^7.2.2", "jsesc": "^2.5.1", "lodash": "^4.17.10", "source-map": "^0.5.0", @@ -30,7 +28,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.0.0", "@babel/template": "^7.1.0", @@ -41,7 +38,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, "requires": { "@babel/types": "^7.0.0" } @@ -50,7 +46,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", - "dev": true, "requires": { "@babel/types": "^7.0.0" } @@ -59,7 +54,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", - "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -67,55 +61,40 @@ } }, "@babel/parser": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.5.tgz", - "integrity": "sha512-WXKf5K5HT6X0kKiCOezJZFljsfxKV1FpU8Tf1A7ZpGvyd/Q4hlrJm2EwoH2onaUq3O4tLDp+4gk0hHPsMyxmOg==", - "dev": true + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.3.tgz", + "integrity": "sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA==" }, "@babel/template": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz", - "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==", - "dev": true, + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", + "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.1.2", - "@babel/types": "^7.1.2" + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2" } }, "@babel/traverse": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.5.tgz", - "integrity": "sha512-eU6XokWypl0MVJo+MTSPUtlfPePkrqsF26O+l1qFGlCKWwmiYAYy2Sy44Qw8m2u/LbPCsxYt90rghmqhYMGpPA==", - "dev": true, + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", + "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.1.5", + "@babel/generator": "^7.2.2", "@babel/helper-function-name": "^7.1.0", "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.1.5", - "@babel/types": "^7.1.5", - "debug": "^3.1.0", + "@babel/parser": "^7.2.3", + "@babel/types": "^7.2.2", + "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.10" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } } }, "@babel/types": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.5.tgz", - "integrity": "sha512-sJeqa/d9eM/bax8Ivg+fXF7FpN3E/ZmTrWbkk6r+g7biVYfALMnLin4dKijsaqEhpd2xvOGfQTkQkD31YCVV4A==", - "dev": true, + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.2.tgz", + "integrity": "sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==", "requires": { "esutils": "^2.0.2", "lodash": "^4.17.10", @@ -167,7 +146,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -206,7 +184,6 @@ "version": "10.0.1", "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", - "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.0.0", @@ -220,7 +197,6 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" @@ -269,7 +245,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -307,7 +282,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -315,8 +289,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colors": { "version": "1.1.2", @@ -347,7 +320,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -390,8 +362,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { "version": "5.9.0", @@ -475,8 +446,7 @@ "eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" }, "espree": { "version": "4.1.0", @@ -508,7 +478,6 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, "requires": { "estraverse": "^4.1.0" } @@ -516,14 +485,12 @@ "estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "external-editor": { "version": "3.0.3", @@ -625,8 +592,7 @@ "globals": { "version": "11.8.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", - "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==", - "dev": true + "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==" }, "globby": { "version": "6.1.0", @@ -658,8 +624,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "iconv-lite": { "version": "0.4.24", @@ -779,8 +744,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.12.0", @@ -795,8 +759,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-schema-traverse": { "version": "0.4.1", @@ -841,8 +804,7 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, "make-error": { "version": "1.3.5", @@ -880,8 +842,7 @@ "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, "mute-stream": { "version": "0.0.7", @@ -1131,8 +1092,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-support": { "version": "0.5.9", @@ -1187,7 +1147,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -1228,14 +1187,12 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, "ts-node": { "version": "7.0.1", @@ -1293,12 +1250,6 @@ "prelude-ls": "~1.1.2" } }, - "typescript": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz", - "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==", - "dev": true - }, "underscore": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", diff --git a/package.json b/package.json index 90763f559947d56abc9a92a3aab7df0642b2878a..1bbde2cb4f20e39564475242212c7c762a198d2b 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "", "main": "protractor.conf.js", "dependencies": { - "@types/jasmine": "^2.8.11" + "@types/jasmine": "^2.8.11", + "babel-eslint": "^10.0.1" }, "devDependencies": { "babel-eslint": "^10.0.1", @@ -12,8 +13,7 @@ "eslint-config-google": "^0.11.0", "jasmine-spec-reporter": "^4.2.1", "protractor-beautiful-reporter": "^1.2.7", - "ts-node": "^7.0.1", - "typescript": "^3.1.6" + "ts-node": "^7.0.1" }, "scripts": { "test": "protractor protractor.conf.js" diff --git a/pageObjects/elements/Trombinoscope.po.js b/pageObjects/elements/Trombinoscope.po.js new file mode 100644 index 0000000000000000000000000000000000000000..3fc47ab205ff54170080f4964f929ecf9a992f37 --- /dev/null +++ b/pageObjects/elements/Trombinoscope.po.js @@ -0,0 +1,23 @@ +class Trombinoscope { + getLastNameInput() { + return element(by.id('sindiv:LeNom')); + } + + getFirstNameInput() { + return element(by.id('sindiv:LePrenom')); + } + + getSubmitButton() { + return element(by.id('sindiv:j_idt20')); + } + + getResultName() { + return element.all(by.className('TrombiTitre fn')).get(0); + } + + getAllResultsName() { + return element.all(by.className('TrombiTitre fn')); + } +} + +module.exports = new Trombinoscope(); diff --git a/pageObjects/pages/Demeter.po.js b/pageObjects/pages/Demeter.po.js new file mode 100644 index 0000000000000000000000000000000000000000..162126e869b093d6e146223e46bc9ba57ad4330e --- /dev/null +++ b/pageObjects/pages/Demeter.po.js @@ -0,0 +1,15 @@ +class Demeter { + getEtuDetails() { + return element.all(by.css('.titre')).get(0); + } + + getAdviserDetails() { + return element.all(by.css('.titre')).get(3); + } + + getBaseURI() { + return 'https://demeter.utc.fr'; + } +} + +module.exports = new Demeter(); diff --git a/pageObjects/pages/Index.po.js b/pageObjects/pages/Index.po.js new file mode 100644 index 0000000000000000000000000000000000000000..a62f567f0b053a0edced03ccb0602da95f8bcfe1 --- /dev/null +++ b/pageObjects/pages/Index.po.js @@ -0,0 +1,15 @@ +class Index { + getTrombinoscopeButton() { + return $('#btnTrombi'); + } + + getEtuDirectoryButton() { + return element(by.cssContainingText('a', 'Mon dossier étudiant')); + } + + goToEtuDirectory() { + this.getEtuDirectoryButton().click(); + } +} + +module.exports = new Index(); diff --git a/pageObjects/pages/Login.po.js b/pageObjects/pages/Login.po.js new file mode 100644 index 0000000000000000000000000000000000000000..107009843679ea74acee1d1dc2aaba492d4a1ef3 --- /dev/null +++ b/pageObjects/pages/Login.po.js @@ -0,0 +1,15 @@ +class Login { + getUsername() { + return $('#username'); + } + + getPassword() { + return $('#password'); + } + + getSubmitButton() { + return element(by.name('Submit1')); + } +} + +module.exports = new Login(); diff --git a/pageObjects/pages/index.po.js b/pageObjects/pages/index.po.js new file mode 100644 index 0000000000000000000000000000000000000000..a62f567f0b053a0edced03ccb0602da95f8bcfe1 --- /dev/null +++ b/pageObjects/pages/index.po.js @@ -0,0 +1,15 @@ +class Index { + getTrombinoscopeButton() { + return $('#btnTrombi'); + } + + getEtuDirectoryButton() { + return element(by.cssContainingText('a', 'Mon dossier étudiant')); + } + + goToEtuDirectory() { + this.getEtuDirectoryButton().click(); + } +} + +module.exports = new Index(); diff --git a/pageObjects/pages/login.po.js b/pageObjects/pages/login.po.js new file mode 100644 index 0000000000000000000000000000000000000000..107009843679ea74acee1d1dc2aaba492d4a1ef3 --- /dev/null +++ b/pageObjects/pages/login.po.js @@ -0,0 +1,15 @@ +class Login { + getUsername() { + return $('#username'); + } + + getPassword() { + return $('#password'); + } + + getSubmitButton() { + return element(by.name('Submit1')); + } +} + +module.exports = new Login(); diff --git a/protractor.conf.js b/protractor.conf.js index a624ffb2b8ec330349b6b1a4c5940a1bd2927ad1..64a121be20c60889aeb8f24cbb6ccc4084a2dc72 100644 --- a/protractor.conf.js +++ b/protractor.conf.js @@ -1,6 +1,7 @@ const HtmlReporter = require('protractor-beautiful-reporter'); -const {SpecReporter} = require('jasmine-spec-reporter'); +const { SpecReporter } = require('jasmine-spec-reporter'); const path = require('path'); +const auth = require('./environment.json'); exports.config = { allScriptsTimeout: 11000, @@ -11,60 +12,69 @@ exports.config = { seleniumPort: null, seleniumArgs: [], - specs: [ - './specs/*.spec.js', - ], + specs: ['./specs/*.spec.js'], + + params: { + username: auth.username, + password: auth.password + }, capabilities: { browserName: 'chrome', chromeOptions: { args: ['--window-size=1910,1080'], - }, + prefs: { + download: { + prompt_for_download: false, + directory_upgrade: true, + default_directory: './reports-tmp' + } + } + } }, // A base URL for your application under test. Calls to protractor.get() // with relative paths will be prepended with this. - baseUrl: 'http://localhost:9999', + baseUrl: 'https://webapplis.utc.fr/ent/', directConnect: true, framework: 'jasmine', onPrepare: function() { - jasmine.getEnv().addReporter(new SpecReporter({spec: {displayStacktrace: true}})); - + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + // Add a screenshot reporter: - jasmine.getEnv().addReporter(new HtmlReporter({ - preserveDirectory: true, - takeScreenShotsOnlyForFailedSpecs: true, - screenshotsSubfolder: 'images', - jsonsSubfolder: 'jsons', - baseDirectory: 'reports-tmp', - clientDefaults: { - columnSettings: { - displaySessionId: false, + jasmine.getEnv().addReporter( + new HtmlReporter({ + preserveDirectory: false, + takeScreenShotsOnlyForFailedSpecs: true, + screenshotsSubfolder: 'images', + jsonsSubfolder: 'jsons', + baseDirectory: 'reports-tmp', + clientDefaults: { + columnSettings: { + displaySessionId: false + } }, - }, - pathBuilder: function pathBuilder(spec, descriptions, results, capabilities) { - const currentDate = new Date(); - const day = currentDate.getDate(); - const month = currentDate.getMonth() + 1; - const year = currentDate.getFullYear(); - const time = currentDate.getHours() + ':' + currentDate.getMinutes() + '-' + currentDate.getSeconds(); + pathBuilder: function pathBuilder(spec, descriptions, results, capabilities) { + const currentDate = new Date(); + const day = currentDate.getDate(); + const month = currentDate.getMonth() + 1; + const year = currentDate.getFullYear(); + const time = currentDate.getHours(); - const validDescriptions = descriptions.map(function(description) { - return description.replace('/', '@'); - }); + const validDescriptions = descriptions.map(function(description) { + return description.replace('/', '@'); + }); - return path.join( - day + '-' + month + '-' + year +'-'+ time, - validDescriptions.join('-')); - }, - }).getJasmine2Reporter()); + return path.join(year + '-' + month + '-' + day + '-' + time, validDescriptions.join('-')); + } + }).getJasmine2Reporter() + ); }, - jasmineNodeOpts: { showColors: true, defaultTimeoutInterval: 30000, - print: function() {}, - }, + print: function() {} + } }; diff --git a/specs/1_Login.spec.js b/specs/1_Login.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..73e6970697b60e5e22ba5a27686ba0e639c82e08 --- /dev/null +++ b/specs/1_Login.spec.js @@ -0,0 +1,26 @@ +const Login = require('../pageObjects/pages/Login.po.js'); +const EC = protractor.ExpectedConditions; + +describe('Authentication', () => { + beforeAll(function() { + browser.ignoreSynchronization = true; + browser.get('index.jsf'); + }); + + it('should enter username', () => { + let username = Login.getUsername(); + username.sendKeys(browser.params.username); + expect(username.getAttribute('value')).toBe(browser.params.username); + }); + + it('should enter password', () => { + let password = Login.getPassword(); + password.sendKeys(browser.params.password); + expect(password.getAttribute('value')).toBe(browser.params.password); + }); + + it('should submit and be logged in', () => { + Login.getSubmitButton().click(); + browser.wait(EC.urlContains('https://webapplis.utc.fr/ent/index.jsf'), 10000) + }); +}); diff --git a/specs/2_Trombinoscope.spec.js b/specs/2_Trombinoscope.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..6146896d540c70c7a3bbba21e2984f9700825b34 --- /dev/null +++ b/specs/2_Trombinoscope.spec.js @@ -0,0 +1,26 @@ +const Index = require('../pageObjects/pages/index.po'); +const Trombinoscope = require('../pageObjects/elements/Trombinoscope.po'); +const EC = protractor.ExpectedConditions; + +describe('Trombinoscope', () => { + beforeAll(() => { + browser.ignoreSynchronization = true; + browser.get('index.jsf'); + }); + + it('should expand the Trombinoscope', () => { + Index.getTrombinoscopeButton().click(); + }); + + it('should type in Sallak', function() { + let nameInput = Trombinoscope.getLastNameInput(); + browser.wait(EC.elementToBeClickable(nameInput), 2000); + nameInput.sendKeys('Sallak'); + Trombinoscope.getSubmitButton().click(); + }); + + it('should find Mohamed Sallak', function() { + browser.sleep(2000); + expect(Trombinoscope.getResultName().getText()).toBe('SALLAK Mohamed'); + }); +}); diff --git a/specs/3_Demeter.spec.js b/specs/3_Demeter.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..443573aa1c937e40e6b1c35aa01fdcc82fe1c3da --- /dev/null +++ b/specs/3_Demeter.spec.js @@ -0,0 +1,21 @@ +const Index = require('../pageObjects/pages/Index.po'); +const Demeter = require('../pageObjects/pages/Demeter.po'); +const WindowManager = require('../helpers/WindowManager'); +const EC = protractor.ExpectedConditions; + +describe('Certficate Download', () => { + beforeAll(() => { + browser.ignoreSynchronization = true; + browser.get('index.jsf'); + }); + + it('should click the button to the etu directory server', () => { + Index.goToEtuDirectory(); + }); + + it('should be on demeter server', () => { + WindowManager.switchToNextTab(true); + browser.wait(EC.urlContains(Demeter.getBaseURI()), 10000); + browser.sleep(5000); + }); +}); diff --git a/specs/test.spec.js b/specs/test.spec.js deleted file mode 100644 index 00d0346b00d17cd3128dcff6de5da7de72a6b260..0000000000000000000000000000000000000000 --- a/specs/test.spec.js +++ /dev/null @@ -1,37 +0,0 @@ -describe('Protractor Demo App', function() { - const firstNumber = element(by.model('first')); - const secondNumber = element(by.model('second')); - const goButton = element(by.id('gobutton')); - // const latestResult = element(by.binding('latest')); - const history = element.all(by.repeater('result in memory')); - - /** - * - * @param {*} a - * @param {*} b - */ - function add(a, b) { - firstNumber.sendKeys(a); - secondNumber.sendKeys(b); - goButton.click(); - } - - beforeEach(function() { - browser.get('http://juliemr.github.io/protractor-demo/'); - }); - - it('should have a history', function() { - add(1, 2); - add(3, 4); - - expect(history.count()).toEqual(2); - - add(5, 6); - - expect(history.count()).toEqual(3); // This is wrong! - }); - - it('should like corentin', function() { - expect(true).toBe(true); - }); -});