UNPKG

blue-harvest

Version:
56 lines (49 loc) 2.56 kB
# blue-harvest ## Install You can npm to install the package: `npm install blue-harvest --save-dev`, or if you are using Yarn, `yarn add blue-harvest -D` ## Writing Tests ### Configurations In order for you to use `async await` in the tests, the following line ```javascript SELENIUM_PROMISE_MANAGER: false; ``` should be added to the `protractor.conf.js` file. To regulate the resolution of the screenshots, add ```javascript onPrepare() { browser.driver.manage().window().setSize(1366, 1024); jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); } ``` in `protractor.conf.js`, inside the `config` block. ### Comparing Screenshots To test if a page has changed from a previous screenshot: ``` let result = await blueharvest.compareScreenshot( await browser.takeScreenShot(), pathToGolden); ``` The difference between the two screenshots will be highlighted in pink. ### Updating Reference Screenshots When a change in a page is expected and not a regression, you can update the reference screenshots by setting `UPDATE_GOLDENS=1` when you run the tests. In this case, if any test fails, blue-harvest will update the reference image with the new one. Only tests involving the reference screenshots (goldens) are required. You can edit the `specs` in `protractor.conf.js` so only necessary tests are run in an update. In a Linux system, you can simply run `UPDATE_GOLDENS=1 npm run e2e` to update the reference screenshots. In a windows environment where the command cannot be directly run, you can put it in a shell file and add a npm script that runs `bash ./filename.sh` to update the reference screenshots. ### Adding Masks If there is a part on a page that should be ignored in the screenshot tests, you can add a coloured mask to a certain element before you take the screenshot so it will not be compared each time the tests run. `addMask()` returns the mask element, which can be passed to `removeMask()` to be removed. ``` const e = element(by.css('element_to_ignore')); const mask = await blueharvest.addMask(e, 'gray', 99999, 10, 20, 1.1); const screenshot = await browser.takeScreenShot(); blueharvest.removeMask(mask); ``` The default z-index for the mask element is 10000. An optional `zIndex` argument can be passed to `addMask()` if you would like to increase the value of a mask's z-index. If the mask appears to be off the desired place, you can pass optional `xOffset`, `yOffset` and `sizeMultiplier` arguments to `addMask()` to move/shape the mask manually.