Welcome to the Crawljax Testing page

What is Crawljax?

Crawljax is a Java tool for automatically crawling and testing AJAX based applications.

Crawljax can crawl any AJAX based web application by clicking links and filling in form data. It creates a state-flow graph of the states of the web application. This state-flow graph which is a very powerful base for many types of automated tests.

This site explains how to configure Crawljax and also acts as a test site for Crawljax.

Applications for Crawljax

Setup

Setting up Crawljax only takes a couple of minutes:

CrawljaxConfigurationBuilder builder = CrawljaxConfiguration.builderFor(URL);
builder.crawlRules().insertRandomDataInInputForms(false);

// click these elements
builder.crawlRules().clickDefaultElements();
builder.crawlRules().click("div").withAttribute("class", "clickable");

// but don't click these
builder.crawlRules().dontClick("a").withAttribute("class", "ignore");
builder.crawlRules().dontClick("a").underXPath("//DIV[@id='footer']");

// Set timeouts
builder.crawlRules().waitAfterReloadUrl(WAIT_TIME_AFTER_RELOAD, TimeUnit.MILLISECONDS);
builder.crawlRules().waitAfterEvent(WAIT_TIME_AFTER_EVENT, TimeUnit.MILLISECONDS);

// Add a condition that this XPath doesn't exits
builder.crawlRules().addCrawlCondition("No spans with foo as class",
		        new NotXPathCondition("//*[@class='foo']"));

// Set some input for fields
builder.crawlRules().setInputSpec(getInputSpecification());

// This will generate a nice output in the output directory.
File outFolder = new File("output");
if (outFolder.exists()) {
	FileUtils.deleteDirectory(outFolder);
}
builder.addPlugin(new CrawlOverview(outFolder));

// We want to use two browsers simultaneously.
builder.setBrowserConfig(new BrowserConfiguration(BrowserType.firefox, 2));

CrawljaxRunner crawljax = new CrawljaxRunner(builder.build());
crawljax.call();