- load
- createDriver
- createGridDriver
- resize
- checkLayout
- checkPageSpecLayout
- parsePageSpec
- loadProperties
- readFile
- listDirectory
- makeDirectory
- fileExists
- isDirectory
- retry
- takeScreenshot
- cookie
- inject
- createTestDataProvider
- dumpPage
- testMutation
- logged
- loggedFunction
load
load( jsFilePath )
Loads and executes the javascript in specified file
- jsFilePath - string type. A path to a javascript file.
load("mycomponent.js");
load("someOtherStuff.js");
// some more js code
Important to note that Galen loads the specified javascript only once. So if your tests in multiple files load the same javascript file – it will be executed only once.
Sometimes you might have different folder levels and fromt their you need to access the script from the root folder of a project. Instead of having ../../somescript.js
you could use slash in the beginning:
load("/somescript.js");
createDriver
createDriver( [ url, browserSize, browserType ] )
Creates a WebDriver instance. Also creates a RemoteWebDriver in Grid in case it was configured in config
file
- url - String type. A url to be loaded in a browser
- browserSize - String type (e.g. “650x480”). Dimensions of browser window size
- browserType - String type. A name of a browser. Could be one of these values:
firefox
,chrome
,ie
,phantomjs
var driver = createDriver("http://galenframework.com",
"640x480",
"firefox");
// can also be called like this
var driver = createDriver("http://galenframework.com");
// or just like this
var driver = createDriver();
createGridDriver
createGridDriver( gridHubUrl, settings )
- gridHubUrl - String type. A url to Selenium Grid Hub
- settings - Object type. A set of key/value pairs that specify criteria to fetch a Selenium Grid node
- browser - a name of a browser
- browserVersion - a version of a browser
- platform - a name of a platform (LINUX, WINDOWS, VISTA, XP etc.)
- size - a browser window size. After driver instantiation it will change the size of the windows. This property should not be used in case of mobile node. It is only working on desktop browsers.
- desiredCapabilities - Object type. A set of key/value pairs that provide desired capabilities to driver.
var driver = createGridDriver("http://mygrid/wd/hub", {
browser: "iphone",
desiredCapabilities: {
platform: "OS X 10.8",
version: "6.0",
deviceName: "iPhone",
"device-orientation": "portrait"
}
});
resize
resize( driver, size )
Changes the size of browser window
- driver - an instance of WebDriver
- size - a string with size (e.g. “1024x768”)
resize(driver, "1024x768");
checkLayout
checkLayout( driver, specFile, [ tagsToInclude, tagsToExclude ] )
- driver - WebDriver type. An instance of WebDriver
- specFile - String type. A path to spec file
- tagsToInclude - String[] type (optional) - An array of tags that should be included when checking layout
- tagsToExclude - String[] type (optional) - An array of tags that should be excluded when checking layout
test("Home page", function() {
var driver = createDriver("http://galenframework.com",
"1024x768");
checkLayout(driver, "homePage.gspec", ["all", "desktop"]);
});
You can also use checkLayout
with a single argument like this
checkLayout( settings )
- settings - PlainObject. A set of key/value that specifies different properties for checking layout.
- driver - WebDriver type. An instance of WebDriver
- spec - String type. A path to spec file
- tags - String[] type (optional) - An array of tags that should be included when checking layout
- excludedTags - String[] type (optional) - An array of tags that should be excluded when checking layout
- sectionFilter - String type (optional) - A simple filter for sections
- screenshot - String type (optional) - A path to a screenshot. In case this property is provided Galen will not make a screenshot and will use the provided screenshot instead in reports and for image analysis
- properties - Properties type (optional). Used for providing custom properties when parsing a spec file.
- vars - Map type (optional) - A set of key value pairs which will be used in spec as variables.
- objects - Map type (optional) - a set of object locators which can be referenced from spec
checkLayout({
driver: driver,
spec: "specs/homepage.gspec",
tags: ["mobile", "iphone"],
vars: {
customVariable: "custom value"
},
objects: {
header: "#header",
footer: "xpath: //div[@id='footer']"
}
});
checkPageSpecLayout
checkPageSpecLayout( driver, pageSpec, [ tagsToInclude, tagsToExclude ] )
- driver - WebDriver type. An instance of WebDriver
- pageSpec - PageSpec type. A path to spec file
- tagsToInclude - String[] type (optional) - An array of tags that should be included when checking layout
- tagsToExclude - String[] type (optional) - An array of tags that should be excluded when checking layout
test("Home page", function() {
var driver = createDriver("http://galenframework.com",
"1024x768");
var pageSpec = parsePageSpec({
driver: driver,
spec: "homePage.gspec",
tags: ["all", "desktop"]
});
checkPageSpecLayout(driver, pageSpec, ["all", "desktop"]);
});
You can also use checkPageSpecLayout
with a single argument like this
checkPageSpecLayout( settings )
- settings - PlainObject. A set of key/value that specifies different properties for checking layout.
- driver - WebDriver type. An instance of WebDriver
- pageSpec - PageSpec type. A path to spec file
- tags - String[] type (optional) - An array of tags that should be included when checking layout
- excludedTags - String[] type (optional) - An array of tags that should be excluded when checking layout
- sectionFilter - String type (optional) - A simple filter for sections
- screenshot - String type (optional) - A path to a screenshot. In case this property is provided Galen will not make a screenshot and will use the provided screenshot instead in reports and for image analysis
- properties - Properties type (optional). Used for providing custom properties when parsing a spec file.
- vars - Map type (optional) - A set of key value pairs which will be used in spec as variables.
- objects - Map type (optional) - a set of object locators which can be referenced from spec
checkPageSpecLayout({
driver: driver,
pageSpec: pageSpec,
tags: ["mobile", "iphone"],
vars: {
customVariable: "custom value"
},
objects: {
header: "#header",
footer: "xpath: //div[@id='footer']"
}
});
parsePageSpec
parsePageSpec( settings )
Takes same arguments as checkLayout
function but instead of checking layout it parses a page spec and return a PageSpec
object.
- settings - PlainObject. A set of key/value that specifies different properties for checking layout.
- driver - WebDriver type. An instance of WebDriver
- spec - String type. A path to spec file
- tags - String[] type (optional) - An array of tags that should be included when checking layout
- excludedTags - String[] type (optional) - An array of tags that should be excluded when checking layout
- screenshot - String type (optional) - A path to a screenshot. In case this property is provided Galen will not make a screenshot and will use the provided screenshot instead in reports and for image analysis
- properties - Properties type (optional). Used for providing custom properties when parsing a spec file.
- vars - Map type (optional) - A set of key value pairs which will be used in spec as variables.
- objects - Map type (optional) - a set of object locators which can be referenced from spec
var pageSpec = parsePageSpec({
driver: driver,
spec: "specs/homepage.gspec",
tags: ["mobile", "iphone"],
vars: {
customVariable: "custom value"
},
objects: {
header: "#header",
footer: "xpath: //div[@id='footer']"
}
});
loadProperties
loadProperties( filePath )
Reads a specified property file and returns Java Properties object
- filePath - String type. A path to a properties file
var properties = loadProperties("/path/to/file/mycustom.properties");
var name = properties.get("user.name");
readFile
readFile( filePath )
Reads the content of specified file and returns a String with file content
- filePath - String type. A path to a file
var content = readFile("/path/to/file/names.txt");
listDirectory listDirectory( directoryPath )
Returns an array of files and directories in specified path
var list = listDirectory("/path/to/directory");
makeDirectory
makeDirectory( directoryPath )
Creates directories in all specified path. Returns true if the directory was created, false – otherwise.
makeDirectory("/path/to/new/directory");
fileExists
fileExists( filePath )
Checks whether the specified directory or file exists and returns true or false.
var path = "someFile.txt";
var text = "";
if (fileExists(path)) {
text = readFile(path);
}
isDirectory
isDirectory( directoryPath )
Returns true if the given path is a directory, false – otherwise
var path = "/opt/logs";
if (!isDirectory(path)) {
throw new Error("The give log path is a not directory");
}
retry
retry( tries, callback )
Executes the specified callback with a specified amount of tries in case of error. If a callback is executed without error – it stops. Returns the object that is returned from the callback.
- tries - Amount of times it should retry the specified callback
- callback - function. Takes one number argument that represents amount of tries left
var driver = retry(3, function (triesLeft) {
return createDriver("http://example.com");
});
takeScreenshot
takeScreenshot( driver )
Takes screenshot from specified driver and return a Java File instance with path to create screenshot
- driver - a WebDriver instance
var file = takeScreenshot(driver);
var path = file.getAbsolutePath();
cookie
cookie( driver, cookieValue )
Sets the specified cookie in the page
- driver - a WebDriver instance
- cookieValue - String type. A cookie that should be set in a browser
cookie(driver, "UserName=John; path=/");
inject
inject( driver, jsScript )
Inject the specified javascript on the page
- driver - a WebDriver instance
- jsScript - String type. A script that should be injected in a browser
inject(driver, "document.getElementById('mybutton').innerHTML = 'my button';");
createTestDataProvider
createTestDataProvider( variableName )
Creates a data provider and returns it as a function
- variableName - a name for a data variable which will be accessible in
data
field of the test instance
this.featureSwitched = createTestDataProvider("featureSwitches");
featureSwitched("Feature1", function () {
test("Home page test", function () {
console.log("All my features are here " + this.data.featureSwitches);
});
});
dumpPage
dumpPage(settings)
Creates a dump for a current open page in a browser
- settings - an object that contains the following properties:
- driver - an instance of WebDriver
- name - a name of a page
- spec - a path to a spec file
- exportPath - a path to a folder where Galen should store page dump
- maxWidth - a maximum width of an element for which it should create an image sample
- maxHeight - a maximum height of an element for which it should create an image sample
- onlyImages - a boolean argument. If set to true then only images will be saved to specified
exportPath
without any report files. - excludedObjects - an array of object names that should be excluded from page dump
dumpPage({
driver: driver,
name: "Home page",
spec: "specs/homepage.gspec",
exportPath: "dumps/homepage",
maxWidth: 200,
maxHeight: 200,
onlyImages: false,
excludedObjects: ["header", "footer"]
});
testMutation
testMutation( settings )
Runs mutation testing for specified galen spec file.
- settings - PlainObject. A set of key/value that specifies different properties for checking layout.
- driver - WebDriver type. An instance of WebDriver
- spec - String type. A path to spec file
- tags - String[] type (optional) - An array of tags that should be included when checking layout
- excludedTags - String[] type (optional) - An array of tags that should be excluded when checking layout
- options - PlainObject. (optional) - A structure that holds settings for mutation testing.
- offset - integer type – offset in pixels for each individual mutation
testMutation({
driver: driver,
spec: "specs/homepage.gspec",
tags: ["mobile", "iphone"],
options: {
offset: 5
}
});
logged
logged(text, callback)
Wraps the callback into report section for html report
- text - a report section text
- callback - the callback that will be called within report section
loggedFunction
loggedFunction(textExpression, callback)
Creates a function that will be logged in html report once it is called. The textExpression
argument is used for generating the report text message based on the function arguments that were used during the call.
- textExpression - an expression that is used to generate log text based on the arguments of the initial function call. To refference the argument in the expression you can use
${...}
syntax in expression. Each argument can be refferenced with undescore and argument index. E.g. of valid expression"Log as ${_1} with password ${_2}"
- callback - a callback function that will be executed once the returned function is called. All the arguments passed to the returned function will be passed to a
callback
this.LoginPage = $page("Login", {
emailTextfield: ".email",
passwordTextfield: ".password",
submitButton: "#submit",
loginAs: loggedFunction("Log-in as ${_1} with password ${_2}", function (email, password) {
this.emailTextfield.typeText(email);
this.passwordTextfield.typeText(password);
this.submitButton.click();
});
});
var loginPage = new LoginPage(driver);
loginPage.loginAs("[email protected]", "qwerty");
Comments
We have moved all the discussions to Google Groups. From this moment, if you have problems with your test code or some issues with installation, please ask your questions in https://groups.google.com/forum/#!forum/galen-framework.