From fb81a08994f347374c7afc9699b6004403b0a1b6 Mon Sep 17 00:00:00 2001 From: mgrinko Date: Tue, 8 Oct 2019 13:09:54 +0300 Subject: [PATCH] Simple development --- .gitignore | 2 - .../casper/clickAndHoverHelper.js | 25 ------- .../engine_scripts/casper/loadCookies.js | 15 ---- .../engine_scripts/casper/onBefore.js | 4 -- .../engine_scripts/casper/onReady.js | 5 -- .../casper/waitForHelperHelper.js | 18 ----- .../chromy/clickAndHoverHelper.js | 43 ------------ .../engine_scripts/chromy/loadCookies.js | 22 ------ .../engine_scripts/chromy/onBefore.js | 6 -- .../engine_scripts/chromy/onReady.js | 5 -- backstop_data/engine_scripts/cookies.json | 14 ---- backstop_data/engine_scripts/imageStub.jpg | Bin 2900 -> 0 bytes .../puppet/clickAndHoverHelper.js | 39 ----------- .../engine_scripts/puppet/ignoreCSP.js | 65 ------------------ .../engine_scripts/puppet/interceptImages.js | 37 ---------- .../engine_scripts/puppet/loadCookies.js | 29 -------- .../engine_scripts/puppet/onBefore.js | 3 - .../engine_scripts/puppet/onReady.js | 6 -- config/backstop/backstopConfig.js | 6 +- package.json | 10 ++- server.js | 6 ++ src/images/.gitkeep | 0 22 files changed, 16 insertions(+), 344 deletions(-) delete mode 100644 backstop_data/engine_scripts/casper/clickAndHoverHelper.js delete mode 100644 backstop_data/engine_scripts/casper/loadCookies.js delete mode 100644 backstop_data/engine_scripts/casper/onBefore.js delete mode 100644 backstop_data/engine_scripts/casper/onReady.js delete mode 100644 backstop_data/engine_scripts/casper/waitForHelperHelper.js delete mode 100644 backstop_data/engine_scripts/chromy/clickAndHoverHelper.js delete mode 100644 backstop_data/engine_scripts/chromy/loadCookies.js delete mode 100644 backstop_data/engine_scripts/chromy/onBefore.js delete mode 100644 backstop_data/engine_scripts/chromy/onReady.js delete mode 100644 backstop_data/engine_scripts/cookies.json delete mode 100644 backstop_data/engine_scripts/imageStub.jpg delete mode 100644 backstop_data/engine_scripts/puppet/clickAndHoverHelper.js delete mode 100644 backstop_data/engine_scripts/puppet/ignoreCSP.js delete mode 100644 backstop_data/engine_scripts/puppet/interceptImages.js delete mode 100644 backstop_data/engine_scripts/puppet/loadCookies.js delete mode 100644 backstop_data/engine_scripts/puppet/onBefore.js delete mode 100644 backstop_data/engine_scripts/puppet/onReady.js create mode 100644 server.js delete mode 100644 src/images/.gitkeep diff --git a/.gitignore b/.gitignore index 7c5c289a92..21c4ed76ee 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,3 @@ node_modules .DS_Store yarn.lock package-lock.json -backstop_data -!backstop_data/engine_scripts/ diff --git a/backstop_data/engine_scripts/casper/clickAndHoverHelper.js b/backstop_data/engine_scripts/casper/clickAndHoverHelper.js deleted file mode 100644 index 27406ec482..0000000000 --- a/backstop_data/engine_scripts/casper/clickAndHoverHelper.js +++ /dev/null @@ -1,25 +0,0 @@ -var WAIT_TIMEOUT = 5000; - -module.exports = function (casper, scenario) { - var waitFor = require('./waitForHelperHelper')(casper, WAIT_TIMEOUT); - var hoverSelector = scenario.hoverSelector; - var clickSelector = scenario.clickSelector; - var postInteractionWait = scenario.postInteractionWait; - - if (hoverSelector) { - waitFor(hoverSelector); - casper.then(function () { - casper.mouse.move(hoverSelector); - }); - } - - if (clickSelector) { - waitFor(clickSelector); - casper.then(function () { - casper.click(clickSelector); - }); - } - - // TODO: if postInteractionWait === integer then do ==> wait(postInteractionWait) || elsevvv - waitFor(postInteractionWait); -}; diff --git a/backstop_data/engine_scripts/casper/loadCookies.js b/backstop_data/engine_scripts/casper/loadCookies.js deleted file mode 100644 index 4e433ca722..0000000000 --- a/backstop_data/engine_scripts/casper/loadCookies.js +++ /dev/null @@ -1,15 +0,0 @@ -var fs = require('fs'); - -module.exports = function (casper, scenario) { - var cookies = []; - var cookiePath = scenario.cookiePath; - - // READ COOKIES FROM FILE IF EXISTS - if (fs.existsSync(cookiePath)) { - cookies = JSON.parse(fs.readFileSync(cookiePath)); - } - - casper.page.cookies = cookies; - console.log('Cookie state restored with cookies:', JSON.stringify(cookies, null, 2)); - casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'); -}; diff --git a/backstop_data/engine_scripts/casper/onBefore.js b/backstop_data/engine_scripts/casper/onBefore.js deleted file mode 100644 index 785c4ecf77..0000000000 --- a/backstop_data/engine_scripts/casper/onBefore.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = function (casper, scenario, vp) { - require('./loadCookies')(casper, scenario); - casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'); -}; diff --git a/backstop_data/engine_scripts/casper/onReady.js b/backstop_data/engine_scripts/casper/onReady.js deleted file mode 100644 index 959a443a6a..0000000000 --- a/backstop_data/engine_scripts/casper/onReady.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = function (casper, scenario, vp) { - console.log('SCENARIO> ' + scenario.label); - require('./clickAndHoverHelper')(casper, scenario); - // add more helpers here... -}; diff --git a/backstop_data/engine_scripts/casper/waitForHelperHelper.js b/backstop_data/engine_scripts/casper/waitForHelperHelper.js deleted file mode 100644 index 682eb3bcb3..0000000000 --- a/backstop_data/engine_scripts/casper/waitForHelperHelper.js +++ /dev/null @@ -1,18 +0,0 @@ -var TIMEOUT_DEFAULT = 2000; - -module.exports = function (casper, timeout) { - var TIMEOUT = timeout || TIMEOUT_DEFAULT; - - return function waitFor (selector) { - if (selector) { - casper.waitForSelector( - selector, - function () {}, - function () { - console.error('NOT FOUND > ' + selector); - }, - TIMEOUT - ); - } - }; -}; diff --git a/backstop_data/engine_scripts/chromy/clickAndHoverHelper.js b/backstop_data/engine_scripts/chromy/clickAndHoverHelper.js deleted file mode 100644 index d1af6ea63c..0000000000 --- a/backstop_data/engine_scripts/chromy/clickAndHoverHelper.js +++ /dev/null @@ -1,43 +0,0 @@ -module.exports = function (chromy, scenario) { - var hoverSelector = scenario.hoverSelectors || scenario.hoverSelector; - var clickSelector = scenario.clickSelectors || scenario.clickSelector; - var keyPressSelector = scenario.keyPressSelectors || scenario.keyPressSelector; - var scrollToSelector = scenario.scrollToSelectors || scenario.scrollToSelector; - var postInteractionWait = scenario.postInteractionWait; // selector [str] | ms [int] - - if (keyPressSelector) { - for (const keyPressSelectorItem of [].concat(keyPressSelector)) { - chromy - .wait(keyPressSelectorItem.selector) - .insert(keyPressSelectorItem.selector, keyPressSelectorItem.keyPress); - } - } - - if (hoverSelector) { - chromy - .wait(hoverSelector) - .rect(hoverSelector) - .result(function (rect) { - chromy.mouseMoved(rect.left, rect.top); - }); - } - - if (clickSelector) { - chromy - .wait(clickSelector) - .click(clickSelector); - } - - if (postInteractionWait) { - chromy.wait(postInteractionWait); - } - - if (scrollToSelector) { - chromy - .wait(scrollToSelector) - .evaluate(`window._scrollToSelector = '${scrollToSelector}'`) - .evaluate(function () { - document.querySelector(window._scrollToSelector).scrollIntoView(); - }); - } -}; diff --git a/backstop_data/engine_scripts/chromy/loadCookies.js b/backstop_data/engine_scripts/chromy/loadCookies.js deleted file mode 100644 index 7d5a165b61..0000000000 --- a/backstop_data/engine_scripts/chromy/loadCookies.js +++ /dev/null @@ -1,22 +0,0 @@ -var fs = require('fs'); - -module.exports = function (chromy, scenario) { - var cookies = []; - var cookiePath = scenario.cookiePath; - - // READ COOKIES FROM FILE IF EXISTS - if (fs.existsSync(cookiePath)) { - cookies = JSON.parse(fs.readFileSync(cookiePath)); - } - - // MUNGE COOKIE DOMAIN FOR CHROMY USAGE - cookies = cookies.map(cookie => { - cookie.url = 'https://' + cookie.domain; - delete cookie.domain; - return cookie; - }); - - // SET COOKIES VIA CHROMY - chromy.setCookie(cookies); - console.log('Cookie state restored with:', JSON.stringify(cookies, null, 2)); -}; diff --git a/backstop_data/engine_scripts/chromy/onBefore.js b/backstop_data/engine_scripts/chromy/onBefore.js deleted file mode 100644 index e174ef8b42..0000000000 --- a/backstop_data/engine_scripts/chromy/onBefore.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = function (chromy, scenario, vp) { - require('./loadCookies')(chromy, scenario); - - // IGNORE ANY CERT WARNINGS - chromy.ignoreCertificateErrors(); -}; diff --git a/backstop_data/engine_scripts/chromy/onReady.js b/backstop_data/engine_scripts/chromy/onReady.js deleted file mode 100644 index 6238af8041..0000000000 --- a/backstop_data/engine_scripts/chromy/onReady.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = function (chromy, scenario, vp) { - console.log('SCENARIO > ' + scenario.label); - require('./clickAndHoverHelper')(chromy, scenario); - // add more ready handlers here... -}; diff --git a/backstop_data/engine_scripts/cookies.json b/backstop_data/engine_scripts/cookies.json deleted file mode 100644 index b59400d7e6..0000000000 --- a/backstop_data/engine_scripts/cookies.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "domain": ".www.yourdomain.com", - "path": "/", - "name": "yourCookieName", - "value": "yourCookieValue", - "expirationDate": 1798790400, - "hostOnly": false, - "httpOnly": false, - "secure": false, - "session": false, - "sameSite": "no_restriction" - } -] diff --git a/backstop_data/engine_scripts/imageStub.jpg b/backstop_data/engine_scripts/imageStub.jpg deleted file mode 100644 index 3e526b4bbbc74ef5125cb58f7c8849497ef4fa83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2900 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 diff --git a/backstop_data/engine_scripts/puppet/clickAndHoverHelper.js b/backstop_data/engine_scripts/puppet/clickAndHoverHelper.js deleted file mode 100644 index c7b0616f1b..0000000000 --- a/backstop_data/engine_scripts/puppet/clickAndHoverHelper.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = async (page, scenario) => { - var hoverSelector = scenario.hoverSelectors || scenario.hoverSelector; - var clickSelector = scenario.clickSelectors || scenario.clickSelector; - var keyPressSelector = scenario.keyPressSelectors || scenario.keyPressSelector; - var scrollToSelector = scenario.scrollToSelector; - var postInteractionWait = scenario.postInteractionWait; // selector [str] | ms [int] - - if (keyPressSelector) { - for (const keyPressSelectorItem of [].concat(keyPressSelector)) { - await page.waitFor(keyPressSelectorItem.selector); - await page.type(keyPressSelectorItem.selector, keyPressSelectorItem.keyPress); - } - } - - if (hoverSelector) { - for (const hoverSelectorIndex of [].concat(hoverSelector)) { - await page.waitFor(hoverSelectorIndex); - await page.hover(hoverSelectorIndex); - } - } - - if (clickSelector) { - for (const clickSelectorIndex of [].concat(clickSelector)) { - await page.waitFor(clickSelectorIndex); - await page.click(clickSelectorIndex); - } - } - - if (postInteractionWait) { - await page.waitFor(postInteractionWait); - } - - if (scrollToSelector) { - await page.waitFor(scrollToSelector); - await page.evaluate(scrollToSelector => { - document.querySelector(scrollToSelector).scrollIntoView(); - }, scrollToSelector); - } -}; diff --git a/backstop_data/engine_scripts/puppet/ignoreCSP.js b/backstop_data/engine_scripts/puppet/ignoreCSP.js deleted file mode 100644 index 02253bccea..0000000000 --- a/backstop_data/engine_scripts/puppet/ignoreCSP.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * IGNORE CSP HEADERS - * Listen to all requests. If a request matches scenario.url - * then fetch the request again manually, strip out CSP headers - * and respond to the original request without CSP headers. - * Allows `ignoreHTTPSErrors: true` BUT... requires `debugWindow: true` - * - * see https://github.com/GoogleChrome/puppeteer/issues/1229#issuecomment-380133332 - * this is the workaround until Page.setBypassCSP lands... https://github.com/GoogleChrome/puppeteer/pull/2324 - * - * @param {REQUEST} request - * @return {VOID} - * - * Use this in an onBefore script E.G. - ``` - module.exports = async function(page, scenario) { - require('./removeCSP')(page, scenario); - } - ``` - * - */ - -const fetch = require('node-fetch'); -const https = require('https'); -const agent = new https.Agent({ - rejectUnauthorized: false -}); - -module.exports = async function (page, scenario) { - const intercept = async (request, targetUrl) => { - const requestUrl = request.url(); - - // FIND TARGET URL REQUEST - if (requestUrl === targetUrl) { - const cookiesList = await page.cookies(requestUrl); - const cookies = cookiesList.map(cookie => `${cookie.name}=${cookie.value}`).join('; '); - const headers = Object.assign(request.headers(), { cookie: cookies }); - const options = { - headers: headers, - body: request.postData(), - method: request.method(), - follow: 20, - agent - }; - - const result = await fetch(requestUrl, options); - - const buffer = await result.buffer(); - let cleanedHeaders = result.headers._headers || {}; - cleanedHeaders['content-security-policy'] = ''; - await request.respond({ - body: buffer, - headers: cleanedHeaders, - status: result.status - }); - } else { - request.continue(); - } - }; - - await page.setRequestInterception(true); - page.on('request', req => { - intercept(req, scenario.url); - }); -}; diff --git a/backstop_data/engine_scripts/puppet/interceptImages.js b/backstop_data/engine_scripts/puppet/interceptImages.js deleted file mode 100644 index c6c5ed3911..0000000000 --- a/backstop_data/engine_scripts/puppet/interceptImages.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * INTERCEPT IMAGES - * Listen to all requests. If a request matches IMAGE_URL_RE - * then stub the image with data from IMAGE_STUB_URL - * - * Use this in an onBefore script E.G. - ``` - module.exports = async function(page, scenario) { - require('./interceptImages')(page, scenario); - } - ``` - * - */ - -const fs = require('fs'); -const path = require('path'); - -const IMAGE_URL_RE = /\.gif|\.jpg|\.png/i; -const IMAGE_STUB_URL = path.resolve(__dirname, '../../imageStub.jpg'); -const IMAGE_DATA_BUFFER = fs.readFileSync(IMAGE_STUB_URL); -const HEADERS_STUB = {}; - -module.exports = async function (page, scenario) { - const intercept = async (request, targetUrl) => { - if (IMAGE_URL_RE.test(request.url())) { - await request.respond({ - body: IMAGE_DATA_BUFFER, - headers: HEADERS_STUB, - status: 200 - }); - } else { - request.continue(); - } - }; - await page.setRequestInterception(true); - page.on('request', intercept); -}; diff --git a/backstop_data/engine_scripts/puppet/loadCookies.js b/backstop_data/engine_scripts/puppet/loadCookies.js deleted file mode 100644 index db848a7cc7..0000000000 --- a/backstop_data/engine_scripts/puppet/loadCookies.js +++ /dev/null @@ -1,29 +0,0 @@ -var fs = require('fs'); - -module.exports = async (page, scenario) => { - var cookies = []; - var cookiePath = scenario.cookiePath; - - // READ COOKIES FROM FILE IF EXISTS - if (fs.existsSync(cookiePath)) { - cookies = JSON.parse(fs.readFileSync(cookiePath)); - } - - // MUNGE COOKIE DOMAIN - cookies = cookies.map(cookie => { - cookie.url = 'https://' + cookie.domain; - delete cookie.domain; - return cookie; - }); - - // SET COOKIES - const setCookies = async () => { - return Promise.all( - cookies.map(async (cookie) => { - await page.setCookie(cookie); - }) - ); - }; - await setCookies(); - console.log('Cookie state restored with:', JSON.stringify(cookies, null, 2)); -}; diff --git a/backstop_data/engine_scripts/puppet/onBefore.js b/backstop_data/engine_scripts/puppet/onBefore.js deleted file mode 100644 index a1c374c371..0000000000 --- a/backstop_data/engine_scripts/puppet/onBefore.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = async (page, scenario, vp) => { - await require('./loadCookies')(page, scenario); -}; diff --git a/backstop_data/engine_scripts/puppet/onReady.js b/backstop_data/engine_scripts/puppet/onReady.js deleted file mode 100644 index 517c0e41b6..0000000000 --- a/backstop_data/engine_scripts/puppet/onReady.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = async (page, scenario, vp) => { - console.log('SCENARIO > ' + scenario.label); - await require('./clickAndHoverHelper')(page, scenario); - - // add more ready handlers here... -}; diff --git a/config/backstop/backstopConfig.js b/config/backstop/backstopConfig.js index dd25d98ede..e6f40f1ba6 100644 --- a/config/backstop/backstopConfig.js +++ b/config/backstop/backstopConfig.js @@ -8,6 +8,7 @@ const { basicScenario } = backstop; const config = { ...backstop, + fileNameTemplate: '{scenarioLabel}', viewports: [{ name: 'custom-size', width: 200, @@ -16,9 +17,8 @@ const config = { scenarios: [ { ...basicScenario, - label: 'Elementary test', - referenceUrl: - 'https://mate-academy.github.io/layout_solutions/hello-world/', + label: 'Entire document', + referenceUrl: basicScenario.referenceUrl + '/hello-world/', }], }; diff --git a/package.json b/package.json index 38807e0506..667f37bac0 100644 --- a/package.json +++ b/package.json @@ -6,14 +6,18 @@ "scripts": { "css:test": "rimraf ./backstop_data/bitmaps_test && backstop test --config=config/backstop/backstopConfig", "css:reference": "rimraf ./backstop_data/bitmaps_reference && backstop reference --config=config/backstop/backstopConfig", - "deploy": "bash ./config/hooks/deploy.sh", + "deploy": "npm run publish && git push origin develop", "lint": "stylelint src/**/*.css && eslint src/**/*.js && htmllint --rc ./node_modules/@mate-academy/htmllint-config/.htmllintrc src/*.html", - "start": "http-server ./src -p 8080 -c-1" + "postinstall": "npm run css:reference && git checkout -b develop", + "publish": "bash ./config/hooks/deploy.sh", + "start": "node server.js", + "test": "npm run lint && npm run css:test" }, "keywords": [], "author": "Mate Academy", "license": "GPL-3.0", "devDependencies": { + "@mate-academy/browsersync-config": "*", "@mate-academy/eslint-config": "*", "@mate-academy/htmllint-config": "*", "@mate-academy/stylelint-config": "*", @@ -23,7 +27,7 @@ "eslint-plugin-node": "^8.0.1", "htmllint": "^0.7.3", "htmllint-cli": "0.0.7", - "http-server": "^0.11.1", + "browser-sync": "^2.1.6", "husky": "^1.3.1", "lint-staged": "^8.1.5", "rimraf": "^2.6.3", diff --git a/server.js b/server.js new file mode 100644 index 0000000000..b8975c5232 --- /dev/null +++ b/server.js @@ -0,0 +1,6 @@ +'use strict'; + +const browserSync = require('browser-sync'); +const config = require('@mate-academy/browsersync-config'); + +browserSync(config); diff --git a/src/images/.gitkeep b/src/images/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000