Skip to content

Instantly share code, notes, and snippets.

View jsdevel's full-sized avatar

Joe Spencer jsdevel

View GitHub Profile
@jsdevel
jsdevel / selenium-test-using-mixins.java
Last active August 29, 2015 14:19
selenium-test-using-mixins
public class HomePageITest {
@Test
public we_should_be_able_to_search_from_the_homepage() {
pageFactory.getHomePage()
.get()
.doSomethingOnTheHomePage()
.clickSearchWidgetSubmitButton()
.doSomethingElseOnTheHomePage()
;
}
var SearchWidget = require('./widgets/SearchWidget');
var Page = require('./Page');
module.exports = function HomePage() {
Page.call(this);
SearchWidget.call(this);
this.doSomethingOnTheHomePage = function() {
// do something
return this;
module.exports = function SearchWidget() {
var SEARCH_WIDGET_SUBMIT_BUTTON_SELECTOR = '#searchWidgetSubmitButtonSelector';
this.clickSearchWidgetButton = function() {
this.driver.findElement(By.id(SEARCH_WIDGET_SUBMIT_BUTTON_SELECTOR)).click();
return this;
};
};
module.exports = function Page(driver, endpoint) {
this.driver = driver;
this.get = function() {
driver.get(endpoint + this.getPagePath());
return this;
};
};
describe('the home page', function() {
it('should allow users to search', function() {
pageFactory.getHomePage()
.get()
.doSomethingOnTheHomePage()
.clickSearchWidgetSubmitButton()
.doSomethingElseOnTheHomePage()
;
});
});
package my.project;
import org.testng.annotations.Test;
import com.github.jsdevel.testng.selenium.AbstractSuite;
public class SampleSuiteITest extends AbstractSuite<MyPageFactory> {
@Test
public void we_should_be_able_to_view_the_home_page() {
getPageFactory().getHomePage();
<dependency>
<groupId>com.github.jsdevel</groupId>
<artifactId>testng-selenium</artifactId>
<!-- Change this to the version you wish to use. -->
<version>RELEASE</version>
</dependency>
package my.project;
import com.github.jsdevel.testng.selenium.PageFactory;
public interface MyPageFactory extends PageFactory {
MyHomePage getHomePage();
MyHomePage getHomePage(String path);
}
package com.github.jsdevel.testng.selenium.samples;
import com.github.jsdevel.testng.selenium.AbstractPage;
import java.net.URL;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class GoogleHomePage extends AbstractPage<GoogleHomePage, SamplePageFactory> {
@FindBy(css = "[name=q]")
public WebElement q;
@Test @UserAgent("some new user agent")
public void verify_that_we_can_override_a_user_agent() {
// hooray!
}