From 26905078caa3aa2900d4cb199e5a51b7a3604abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 25 Sep 2020 11:22:49 +0200 Subject: [PATCH 1/7] create enviroment configuration through install script --- .../createEnviromentConfiguration.js | 35 +++++++++++++++++++ src/Umbraco.Tests.AcceptanceTest/package.json | 5 ++- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Tests.AcceptanceTest/createEnviromentConfiguration.js diff --git a/src/Umbraco.Tests.AcceptanceTest/createEnviromentConfiguration.js b/src/Umbraco.Tests.AcceptanceTest/createEnviromentConfiguration.js new file mode 100644 index 0000000000..6ee54bdf37 --- /dev/null +++ b/src/Umbraco.Tests.AcceptanceTest/createEnviromentConfiguration.js @@ -0,0 +1,35 @@ +const prompt = require('prompt'); +fs = require('fs'); + +const properties = [ + { + name: 'username' + }, + { + name: 'password', + hidden: true + } +]; + +prompt.start(); + +prompt.get(properties, function (error, result) { + if (error) { return onError(error); } + + console.log('Saving...'); + +var fileContent = `{ + "username": "${result.username}", + "password": "${result.password}" +}`; + + fs.writeFile('cypress.env.json', fileContent, function (error) { + if (error) return console.error(error); + console.log('Saved'); + }); +}); + +function onError(error) { + console.error(error); + return true; +} diff --git a/src/Umbraco.Tests.AcceptanceTest/package.json b/src/Umbraco.Tests.AcceptanceTest/package.json index 2017142d1e..12db29b68a 100644 --- a/src/Umbraco.Tests.AcceptanceTest/package.json +++ b/src/Umbraco.Tests.AcceptanceTest/package.json @@ -1,5 +1,7 @@ { "scripts": { + "postinstall": "node createEnviromentConfiguration.js", + "config": "node createEnviromentConfiguration.js", "test": "npx cypress run", "ui": "npx cypress open" }, @@ -7,7 +9,8 @@ "cross-env": "^7.0.2", "cypress": "^5.1.0", "ncp": "^2.0.0", - "umbraco-cypress-testhelpers": "^1.0.0-beta-50" + "umbraco-cypress-testhelpers": "^1.0.0-beta-50", + "prompt": "^1.0.0" }, "dependencies": { "typescript": "^3.9.2" From 9286282ecaeca859467183d7d35af5c8a558e41d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 25 Sep 2020 11:36:28 +0200 Subject: [PATCH 2/7] updated text --- .../createEnviromentConfiguration.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Tests.AcceptanceTest/createEnviromentConfiguration.js b/src/Umbraco.Tests.AcceptanceTest/createEnviromentConfiguration.js index 6ee54bdf37..469408d4b3 100644 --- a/src/Umbraco.Tests.AcceptanceTest/createEnviromentConfiguration.js +++ b/src/Umbraco.Tests.AcceptanceTest/createEnviromentConfiguration.js @@ -3,21 +3,21 @@ fs = require('fs'); const properties = [ { - name: 'username' + name: 'superadmin username/email' }, { - name: 'password', + name: 'superadmin password', hidden: true } ]; +console.log("Configure your test enviroment:") + prompt.start(); prompt.get(properties, function (error, result) { if (error) { return onError(error); } - console.log('Saving...'); - var fileContent = `{ "username": "${result.username}", "password": "${result.password}" @@ -25,7 +25,7 @@ var fileContent = `{ fs.writeFile('cypress.env.json', fileContent, function (error) { if (error) return console.error(error); - console.log('Saved'); + console.log('Configuration saved'); }); }); From 78724c11eb4b07ef2ed6b1df213ce4dee73cca07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 25 Sep 2020 11:36:43 +0200 Subject: [PATCH 3/7] updated readme --- src/Umbraco.Tests.AcceptanceTest/README.md | 70 +++++++++++----------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/src/Umbraco.Tests.AcceptanceTest/README.md b/src/Umbraco.Tests.AcceptanceTest/README.md index 541efd40f8..f4edaa92ea 100644 --- a/src/Umbraco.Tests.AcceptanceTest/README.md +++ b/src/Umbraco.Tests.AcceptanceTest/README.md @@ -1,34 +1,36 @@ -# Umbraco Acceptance Tests - -### Prerequisites -- NodeJS 12+ -- A running installed Umbraco on url: [https://localhost:44331](https://localhost:44331) (Default development port) - - Install using a `SqlServer`/`LocalDb` as the tests execute too fast for `SqlCE` to handle. -- User information in `cypress.env.json` (See [Getting started](#getting-started)) - -### Getting started -The tests are located in the project/folder as `Umbraco.Tests.AcceptanceTests`. Make sure you run `npm install` in that folder, or let your IDE do that. - -Next, it is important that you create a new file in the root of the project called `cypress.env.json`. -This file is already added to `.gitignore` and can contain values that are different for each developer machine. - -The file needs the following content: -``` -{ - "username": "", - "password": "" -} -``` -Replace the `` and `` placeholders with correct info. - - - -### Executing tests -There are two npm scripts that can be used to execute the test: - -1. `npm run test` - - Executes the tests headless. -1. `npm run ui` - - Executes the tests in a browser handled by a cypress application. - - In case of errors it is recommended to use the UI to debug. +# Umbraco Acceptance Tests + +### Prerequisites +- NodeJS 12+ +- A running installed Umbraco on url: [https://localhost:44331](https://localhost:44331) (Default development port) + - Install using a `SqlServer`/`LocalDb` as the tests execute too fast for `SqlCE` to handle. + +### Getting started +The tests are located in the project/folder as `Umbraco.Tests.AcceptanceTests`. Make sure you run `npm install` in that folder, or let your IDE do that. + +The script will ask you to enter the username and password for a superadmin user of your Umbraco CMS. + +### Executing tests +There are two npm scripts that can be used to execute the test: + +1. `npm run test` + - Executes the tests headless. +1. `npm run ui` + - Executes the tests in a browser handled by a cypress application. + + In case of errors it is recommended to use the UI to debug. + +### Enviroment Configuration + +The enviroment configuration is begin setup by the npm installation script. +This results in the creation of this file: `cypress.env.json`. +This file is already added to `.gitignore` and can contain values that are different for each developer machine. + +The file has the following content: +``` +{ + "username": "", + "password": "" +} +``` +You can change this if you like or run the config script to reset the values, type "npm run config" in your terminal. From b46dad39ff75fc5ab9c59c4261becb05716ba834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 25 Sep 2020 11:50:57 +0200 Subject: [PATCH 4/7] only write config if file does not already exist --- ...reateEnviromentConfiguration.js => config.js} | 16 ++++++++++------ src/Umbraco.Tests.AcceptanceTest/package.json | 4 ++-- src/Umbraco.Tests.AcceptanceTest/postinstall.js | 14 ++++++++++++++ 3 files changed, 26 insertions(+), 8 deletions(-) rename src/Umbraco.Tests.AcceptanceTest/{createEnviromentConfiguration.js => config.js} (63%) create mode 100644 src/Umbraco.Tests.AcceptanceTest/postinstall.js diff --git a/src/Umbraco.Tests.AcceptanceTest/createEnviromentConfiguration.js b/src/Umbraco.Tests.AcceptanceTest/config.js similarity index 63% rename from src/Umbraco.Tests.AcceptanceTest/createEnviromentConfiguration.js rename to src/Umbraco.Tests.AcceptanceTest/config.js index 469408d4b3..44f4f7543a 100644 --- a/src/Umbraco.Tests.AcceptanceTest/createEnviromentConfiguration.js +++ b/src/Umbraco.Tests.AcceptanceTest/config.js @@ -1,17 +1,21 @@ const prompt = require('prompt'); -fs = require('fs'); +const fs = require('fs'); const properties = [ { - name: 'superadmin username/email' + name: 'username' }, { - name: 'superadmin password', + name: 'password', hidden: true } ]; -console.log("Configure your test enviroment:") + +const configPath = './cypress.env.json' + +console.log("Configure your test enviroment") +console.log("Enter CMS superadmin credentials:") prompt.start(); @@ -23,10 +27,10 @@ var fileContent = `{ "password": "${result.password}" }`; - fs.writeFile('cypress.env.json', fileContent, function (error) { + fs.writeFile(configPath, fileContent, function (error) { if (error) return console.error(error); console.log('Configuration saved'); - }); + }); }); function onError(error) { diff --git a/src/Umbraco.Tests.AcceptanceTest/package.json b/src/Umbraco.Tests.AcceptanceTest/package.json index 12db29b68a..e845681f18 100644 --- a/src/Umbraco.Tests.AcceptanceTest/package.json +++ b/src/Umbraco.Tests.AcceptanceTest/package.json @@ -1,7 +1,7 @@ { "scripts": { - "postinstall": "node createEnviromentConfiguration.js", - "config": "node createEnviromentConfiguration.js", + "postinstall": "node postinstall.js", + "config": "node config.js", "test": "npx cypress run", "ui": "npx cypress open" }, diff --git a/src/Umbraco.Tests.AcceptanceTest/postinstall.js b/src/Umbraco.Tests.AcceptanceTest/postinstall.js new file mode 100644 index 0000000000..ba2246b592 --- /dev/null +++ b/src/Umbraco.Tests.AcceptanceTest/postinstall.js @@ -0,0 +1,14 @@ +const fs = require('fs'); + +const configPath = './cypress.env.json'; + +try { + if (fs.existsSync(configPath)) { + //file exists + console.log("Skips configuration as file already exists, run 'npm run config' to change your configuration."); + } else { + require('./createEnviromentConfiguration.js'); + } +} catch(err) { + console.error(err) +} From 408546812597989894f5f4597400a7b0fc32e2cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 25 Sep 2020 12:01:40 +0200 Subject: [PATCH 5/7] update dependency name --- src/Umbraco.Tests.AcceptanceTest/postinstall.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Tests.AcceptanceTest/postinstall.js b/src/Umbraco.Tests.AcceptanceTest/postinstall.js index ba2246b592..6117ac84f0 100644 --- a/src/Umbraco.Tests.AcceptanceTest/postinstall.js +++ b/src/Umbraco.Tests.AcceptanceTest/postinstall.js @@ -7,7 +7,7 @@ try { //file exists console.log("Skips configuration as file already exists, run 'npm run config' to change your configuration."); } else { - require('./createEnviromentConfiguration.js'); + require('./config.js'); } } catch(err) { console.error(err) From b5374152a1c3220edd4642359167d089e093e460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 25 Sep 2020 12:45:45 +0200 Subject: [PATCH 6/7] make baseUrl an optional part of configuration --- src/Umbraco.Tests.AcceptanceTest/config.js | 12 ++++++++++-- .../cypress/plugins/index.js | 7 +++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Tests.AcceptanceTest/config.js b/src/Umbraco.Tests.AcceptanceTest/config.js index 44f4f7543a..e86b14d076 100644 --- a/src/Umbraco.Tests.AcceptanceTest/config.js +++ b/src/Umbraco.Tests.AcceptanceTest/config.js @@ -3,11 +3,17 @@ const fs = require('fs'); const properties = [ { + description: 'Enter your superadmin username/email', name: 'username' }, { + description: 'Enter your superadmin password', name: 'password', hidden: true + }, + { + description: 'Enter CMS URL, or leave empty for default(https://localhost:44331)', + name: 'baseUrl' } ]; @@ -15,7 +21,6 @@ const properties = [ const configPath = './cypress.env.json' console.log("Configure your test enviroment") -console.log("Enter CMS superadmin credentials:") prompt.start(); @@ -24,7 +29,10 @@ prompt.get(properties, function (error, result) { var fileContent = `{ "username": "${result.username}", - "password": "${result.password}" + "password": "${result.password}"${ + result.baseUrl && `, + "baseUrl": "${result.baseUrl}"` + } }`; fs.writeFile(configPath, fileContent, function (error) { diff --git a/src/Umbraco.Tests.AcceptanceTest/cypress/plugins/index.js b/src/Umbraco.Tests.AcceptanceTest/cypress/plugins/index.js index aa9918d215..59283feec5 100644 --- a/src/Umbraco.Tests.AcceptanceTest/cypress/plugins/index.js +++ b/src/Umbraco.Tests.AcceptanceTest/cypress/plugins/index.js @@ -18,4 +18,11 @@ module.exports = (on, config) => { // `on` is used to hook into various events Cypress emits // `config` is the resolved Cypress config + const baseUrl = config.env.baseUrl || null; + + if (baseUrl) { + config.baseUrl = baseUrl; + } + + return config; } From b053ad142363b4e813c120da14d9025e434ca7bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 25 Sep 2020 14:02:22 +0200 Subject: [PATCH 7/7] set to be required --- src/Umbraco.Tests.AcceptanceTest/config.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Tests.AcceptanceTest/config.js b/src/Umbraco.Tests.AcceptanceTest/config.js index e86b14d076..5297cbccbc 100644 --- a/src/Umbraco.Tests.AcceptanceTest/config.js +++ b/src/Umbraco.Tests.AcceptanceTest/config.js @@ -4,12 +4,14 @@ const fs = require('fs'); const properties = [ { description: 'Enter your superadmin username/email', - name: 'username' + name: 'username', + required: true }, { description: 'Enter your superadmin password', name: 'password', - hidden: true + hidden: true, + required: true }, { description: 'Enter CMS URL, or leave empty for default(https://localhost:44331)',