Plugin for hermione which is intended to add/wrap browser commands in order to work properly with the iOS safari browser.
You can read more about hermione plugins here.
npm install hermione-safari-commands
Plugin has following configuration:
-
enabled (optional)
Boolean
– enable/disable the plugin, by default plugin is enabled; -
browsers (required)
Object
- the list of browsers to use for wrap commands;-
commands (required)
Array
- commands which will be wrapped. -
nativeElementsSize (optional)
Object
- the map of native elements sizes for the browser. Sizes in pixels without counting the pixel ratio. Can be used in order to speed up taking screenshots;-
topToolbar (required)
Object
- the size of the top toolbar;-
width (required)
Number
- the width of the top toolbar; -
height (required)
Number
- the height of the top toolbar;
-
width (required)
-
bottomToolbar (required)
Object
- the size of the bottom toolbar;-
width (required)
Number
- the width of the bottom toolbar; -
height (required)
Number
- the height of the bottom toolbar;
-
width (required)
-
webview (required)
Object
- the size of the webview;-
width (required)
Number
- the width of the webview; -
height (required)
Number
- the height of the webview;
-
width (required)
-
topToolbar (required)
-
commands (required)
Also there is ability to override plugin parameters by CLI options or environment variables
(see configparser).
Use hermione_safari_commands_
prefix for the environment variables and --hermione-safari-commands-
for the cli options.
Add plugin to your hermione
config file:
module.exports = {
// ...
system: {
plugins: {
'hermione-safari-commands': {
enabled: true,
browsers: {
safari13: {
commands: [
'url',
'click',
'screenshot',
'orientation',
'swipe',
'touch',
'dragAndDrop'
],
nativeElementsSize: {
topToolbar: {
height: 47,
width: 390
},
bottomToolbar: {
height: 113,
width: 390
},
webview: {
height: 654,
width: 390
}
}
}
}
}
}
},
//...
}
Wrappers over existing commands:
-
url - wrapper over wdio "url" in order to wait until the page is completely open (used timeout from
hermione.pageLoadTimeout
or30000
ms). In appium-xcuitest-driver page is open with using thexcrun
utility -xcrun simctl openurl
which just tells the simulator to open the page and does not wait anything; - click - replaces wdio "click" in order to perform real touch click (by default it emits only events on passed element). Should be used with touch command;
- screenshot - wrapper of wdio "screenshot" in order to cut the native elements from the final image (calibration must be turned off);
- orientation - wrapper of wdio "orientation" in order to recalculate size of native elements for "screenshot" command (turns on automatically when you specify a screenshot command);
- swipe - replaces wdio "swipe" in order to perform swipe by coordinates in native context;
- touch - replaces wdio "touch" in order to perform touch click by coordinates in native context;
- dragAndDrop - replaces wdio "dragAndDrop" in order to perform drag and drop elements by coordinates in native context.
Commands to work with native elements:
- deviceClickBack - command to click back button on device, which closes the current tab and returns to the previous one.
Run mocha tests:
npm run test-unit
Run eslint codestyle verification
npm run lint