Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
f0f3124
initial set of tests for concordion still buggy with selenium 2.x
mgaertne Feb 26, 2011
5b8f145
fixed build process
mgaertne Feb 27, 2011
44da58d
added waiting condition, still weird results
mgaertne Feb 27, 2011
c4384a1
Fixed the bugs with Selenium 2
andreassimon Feb 27, 2011
67af963
finished all triangle tests
mgaertne Feb 27, 2011
62902f1
added build directory to git ignore
mgaertne Mar 1, 2011
f989948
updated to latest FitNesse version
mgaertne Mar 1, 2011
b43aac7
added new files and directories after FitNesse update
mgaertne Mar 1, 2011
4074e58
initial version of the cuke4duke triangle sampler
mgaertne Jul 24, 2011
2053f90
some selenium updates
mgaertne Jul 27, 2011
34f9186
reverted gitignore. Didn't figure out how to ignore *.pyc
mgaertne Jul 27, 2011
69fe544
updated selenium version
mgaertne Jul 27, 2011
07648f2
some updates for Selenium 2.2.0
mgaertne Jul 27, 2011
1f87204
some more ignore updates
mgaertne Jul 27, 2011
5a4e3f0
upgraded to new selenium version and fitlibrary version
mgaertne Oct 24, 2011
9c8b3e7
updated to latest selenium version
mgaertne Oct 24, 2011
e25b512
updated to latest selenium version
mgaertne Oct 24, 2011
e21c4d7
upgraded to latest FitNesse release
mgaertne Oct 27, 2011
7d8da12
updated classpaths
mgaertne Jan 4, 2012
c911d67
added JBehave examples
mgaertne Jan 10, 2012
9ac11db
Updated to latest JBehave
mgaertne Jan 15, 2012
4a997e7
added CucumberJVM examples
mgaertne Apr 23, 2012
9b7c76c
updated Cuke4Duke example to latest libraries of selenium
mgaertne Apr 23, 2012
5c158c4
some updates for FitNesse
mgaertne Apr 23, 2012
bd5935b
added first few pieces of Jnario Tests. Need to get this working from…
mgaertne Aug 4, 2012
c6c353f
added some more bdd style tests to the feature
mgaertne Aug 4, 2012
75d224d
some cosmetics
mgaertne Aug 4, 2012
ad604c9
refactored layout to maven layout so that tests can be run from comma…
mgaertne Aug 6, 2012
5185b3b
some last changes
mgaertne Aug 6, 2012
f203586
added README for Jnario examples
mgaertne Aug 14, 2012
b59b42a
first version for JDave examples
mgaertne Aug 14, 2012
38f1ff9
cleaned up pom.xml
mgaertne Aug 14, 2012
38757f6
Cucumber JVM example running now, slightly - still some work to do
mgaertne Dec 5, 2012
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
43 changes: 43 additions & 0 deletions Concordion/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="specs"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/apache-mime4j-0.6.jar"/>
<classpathentry kind="lib" path="lib/bcprov-jdk15-135.jar"/>
<classpathentry kind="lib" path="lib/cglib-nodep-2.1_3.jar"/>
<classpathentry kind="lib" path="lib/commons-codec-1.4.jar"/>
<classpathentry kind="lib" path="lib/commons-collections-3.2.1.jar"/>
<classpathentry kind="lib" path="lib/commons-io-2.0.1.jar"/>
<classpathentry kind="lib" path="lib/commons-lang-2.6.jar"/>
<classpathentry kind="lib" path="lib/commons-logging-1.1.1.jar"/>
<classpathentry kind="lib" path="lib/concordion-1.4.1.jar"/>
<classpathentry kind="lib" path="lib/concordion-extensions-1.0.1.jar"/>
<classpathentry kind="lib" path="lib/cssparser-0.9.5.jar"/>
<classpathentry kind="lib" path="lib/guava-r09.jar"/>
<classpathentry kind="lib" path="lib/hamcrest-all-1.1.jar"/>
<classpathentry kind="lib" path="lib/htmlunit-2.9.jar"/>
<classpathentry kind="lib" path="lib/htmlunit-core-js-2.9.jar"/>
<classpathentry kind="lib" path="lib/httpclient-4.1.2.jar"/>
<classpathentry kind="lib" path="lib/httpcore-4.1.3.jar"/>
<classpathentry kind="lib" path="lib/httpmime-4.0.1.jar"/>
<classpathentry kind="lib" path="lib/javassist.jar"/>
<classpathentry kind="lib" path="lib/jmock-2.4.0.jar"/>
<classpathentry kind="lib" path="lib/jmock-junit3-2.4.0.jar"/>
<classpathentry kind="lib" path="lib/jna-3.3.0.jar"/>
<classpathentry kind="lib" path="lib/json-20080701.jar"/>
<classpathentry kind="lib" path="lib/junit-dep-4.10.jar"/>
<classpathentry kind="lib" path="lib/mx4j-tools-3.0.1.jar"/>
<classpathentry kind="lib" path="lib/nekohtml-1.9.15.jar"/>
<classpathentry kind="lib" path="lib/ognl-3.0.1.jar"/>
<classpathentry kind="lib" path="lib/protobuf-java-2.4.1.jar"/>
<classpathentry kind="lib" path="lib/sac-1.3.jar"/>
<classpathentry kind="lib" path="lib/selenium-java-2.9.0.jar"/>
<classpathentry kind="lib" path="lib/serializer-2.7.1.jar"/>
<classpathentry kind="lib" path="lib/servlet-api-2.5-6.1.9.jar"/>
<classpathentry kind="lib" path="lib/testng-6.0.1-nobsh-noguice.jar"/>
<classpathentry kind="lib" path="lib/xalan-2.7.1.jar"/>
<classpathentry kind="lib" path="lib/xercesImpl-2.9.1.jar"/>
<classpathentry kind="lib" path="lib/xml-apis-1.3.04.jar"/>
<classpathentry kind="lib" path="lib/xom-1.2.6.jar"/>
<classpathentry kind="output" path="build"/>
</classpath>
2 changes: 2 additions & 0 deletions Concordion/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/results
/build
17 changes: 17 additions & 0 deletions Concordion/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Triangle-Test-Sampler Concordion</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
8 changes: 8 additions & 0 deletions Concordion/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Concordion is a functional test automation tool based upon HTML specifications. Hooks to the automation layer are annotated in the HTML file directly.

For more information on Concordion, see http://concordion.org

This examples was created by Markus Gärtner
Assistance with Selenium 2 by Andreas Simon

To execute these tests run ant with the default target.
62 changes: 62 additions & 0 deletions Concordion/build.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<project name="concordion-kickstart" default="build" basedir=".">

<property name="build.dir" value="build" />
<property name="specs.dir" value="specs" />
<property name="results.dir" value="results"/>

<path id="compile.classpath">
<fileset dir="lib" includes="*.jar"/>
</path>

<target name="clean" description="Remove old build artifacts">
<delete dir="${build.dir}" />
<delete dir="${results.dir}" />
</target>

<target name="compile">
<mkdir dir="${build.dir}"/>

<javac classpathref="compile.classpath"
destdir="${build.dir}"
srcdir="${specs.dir}"
debug="yes"
failonerror="yes"
source="1.5"
target="1.5"
includeantruntime="no"
/>

<copy todir="${build.dir}">
<fileset dir="${specs.dir}" />
</copy>

</target>

<target name="run.tests" depends="compile">
<mkdir dir="${results.dir}"/>

<junit fork="yes" forkmode="once" printsummary="yes" haltonfailure="yes" showoutput="yes">
<jvmarg value="-Dconcordion.output.dir=${results.dir}"/>

<classpath>
<path refid="compile.classpath"/>
<pathelement location="${build.dir}"/>
</classpath>

<formatter type="plain" />

<batchtest todir="${results.dir}">
<fileset dir="${specs.dir}">
<include name="**/*Test.java"/>
<exclude name="**/Abstract*"/>
</fileset>
</batchtest>
</junit>
</target>

<target name="build"
description="Builds everything from scratch"
depends="compile, run.tests"
/>

</project>
Binary file added Concordion/lib/apache-mime4j-0.6.jar
Binary file not shown.
Binary file added Concordion/lib/bcprov-jdk15-135.jar
Binary file not shown.
Binary file added Concordion/lib/cglib-nodep-2.1_3.jar
Binary file not shown.
Binary file added Concordion/lib/commons-codec-1.4.jar
Binary file not shown.
Binary file added Concordion/lib/commons-collections-3.2.1.jar
Binary file not shown.
Binary file added Concordion/lib/commons-io-2.0.1.jar
Binary file not shown.
Binary file added Concordion/lib/commons-lang-2.6.jar
Binary file not shown.
Binary file added Concordion/lib/commons-logging-1.1.1.jar
Binary file not shown.
Binary file added Concordion/lib/concordion-1.4.1.jar
Binary file not shown.
Binary file added Concordion/lib/concordion-extensions-1.0.1.jar
Binary file not shown.
Binary file added Concordion/lib/cssparser-0.9.5.jar
Binary file not shown.
Binary file added Concordion/lib/guava-r09.jar
Binary file not shown.
Binary file added Concordion/lib/hamcrest-all-1.1.jar
Binary file not shown.
Binary file added Concordion/lib/htmlunit-2.9.jar
Binary file not shown.
Binary file added Concordion/lib/htmlunit-core-js-2.9.jar
Binary file not shown.
Binary file added Concordion/lib/httpclient-4.1.2.jar
Binary file not shown.
Binary file added Concordion/lib/httpcore-4.1.3.jar
Binary file not shown.
Binary file added Concordion/lib/httpmime-4.0.1.jar
Binary file not shown.
Binary file added Concordion/lib/javassist.jar
Binary file not shown.
Binary file added Concordion/lib/jmock-2.4.0.jar
Binary file not shown.
Binary file added Concordion/lib/jmock-junit3-2.4.0.jar
Binary file not shown.
Binary file added Concordion/lib/jna-3.3.0.jar
Binary file not shown.
Binary file added Concordion/lib/json-20080701.jar
Binary file not shown.
Binary file added Concordion/lib/junit-dep-4.10.jar
Binary file not shown.
Binary file added Concordion/lib/mx4j-tools-3.0.1.jar
Binary file not shown.
Binary file added Concordion/lib/nekohtml-1.9.15.jar
Binary file not shown.
Binary file added Concordion/lib/ognl-3.0.1.jar
Binary file not shown.
Binary file added Concordion/lib/protobuf-java-2.4.1.jar
Binary file not shown.
Binary file added Concordion/lib/sac-1.3.jar
Binary file not shown.
Binary file added Concordion/lib/selenium-java-2.9.0.jar
Binary file not shown.
Binary file added Concordion/lib/serializer-2.7.1.jar
Binary file not shown.
Binary file added Concordion/lib/servlet-api-2.5-6.1.9.jar
Binary file not shown.
Binary file added Concordion/lib/testng-6.0.1-nobsh-noguice.jar
Binary file not shown.
Binary file added Concordion/lib/xalan-2.7.1.jar
Binary file not shown.
Binary file added Concordion/lib/xercesImpl-2.9.1.jar
Binary file not shown.
Binary file added Concordion/lib/xml-apis-1.3.04.jar
Binary file not shown.
Binary file added Concordion/lib/xom-1.2.6.jar
Binary file not shown.
91 changes: 91 additions & 0 deletions Concordion/specs/org/triangleTests/concordion/Triangle.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
<html xmlns:concordion="http://www.concordion.org/2007/concordion">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="concordion.css" rel="stylesheet" type="text/css" />
<title>Triangle Tests</title>
</head>
<body>

<h1>Triangle Tests</h1>

<div class="example">

<h3>Examples</h3>

<table concordion:execute="#triangle = triangleFor(#side1, #side2, #side3)">
<tr>
<th concordion:set="#side1">Side #1</th>
<th concordion:set="#side2">Side #2</th>
<th concordion:set="#side3">Side #3</th>
<th concordion:assertEquals="#triangle.triangleType()">Triangle Type</th>
<th concordion:assertEquals="#triangle.coordinatesAreValid()">Drawn inside canvas</th>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>Equilateral</td>
<td>true</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
<td>5</td>
<td>Right</td>
<td>true</td>
</tr>
<tr>
<td>4</td>
<td>4</td>
<td>5</td>
<td>Isosceles</td>
<td>true</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
<td>Scalene</td>
<td>true</td>
</tr>
<tr>
<td>2</td>
<td>5</td>
<td>6</td>
<td>Scalene</td>
<td>true</td>
</tr>
<tr>
<td>4.2</td>
<td>5.6</td>
<td>6.1</td>
<td>Scalene</td>
<td>true</td>
</tr>
</table>


<table concordion:execute="#triangle = triangleFor(#side1, #side2, #side3)">
<tr>
<th concordion:set="#side1">Side #1</th>
<th concordion:set="#side2">Side #2</th>
<th concordion:set="#side3">Side #3</th>
<th concordion:assertEquals="#triangle.triangleType()">Triangle Type</th>
</tr>
<tr>
<td>0</td>
<td>4</td>
<td>5</td>
<td>Invalid</td>
</tr>
<tr>
<td>1</td>
<td>4</td>
<td>6</td>
<td>Invalid</td>
</tr>
</table>

</div>
</body>
</html>
142 changes: 142 additions & 0 deletions Concordion/specs/org/triangleTests/concordion/TriangleTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
package org.triangleTests.concordion;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.concordion.integration.junit4.ConcordionRunner;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

@RunWith(ConcordionRunner.class)
public class TriangleTest {

private static WebDriver driver;
private TrianglePage page;

@BeforeClass
public static void suiteSetUp() {
driver = firefoxDriver();
driver.get("http://practice.agilistry.com/triangle/");
}

private static WebDriver firefoxDriver() {
FirefoxDriver firefoxDriver = new FirefoxDriver();
return firefoxDriver;
}

@Before
public void setUp() {
page = PageFactory.initElements(driver, TrianglePage.class);
}

@AfterClass
public static void suiteTearDown() {
driver.close();
}

public TrianglePage triangleFor(String side1, String side2, String side3)
throws Exception {
page.enterSideLengths(side1, side2, side3);
return page;
}

public static class TrianglePage {

private Pattern digitPattern = Pattern.compile("^\\d.*$");

private Pattern coordinatePattern = Pattern
.compile("(-*[0-9]+),(-*[0-9]+)\\) \\((-*[0-9]+),(-*[0-9]+)\\) \\((-*[0-9]+),(-*[0-9]+)");

@FindBy(id = "triangle_side1")
private WebElement side1Element;

@FindBy(id = "triangle_side2")
private WebElement side2Element;

@FindBy(id = "triangle_side3")
private WebElement side3Element;

@FindBy(id = "triangle_type")
private WebElement triangleType;

private WebDriver driver;

public TrianglePage(WebDriver driver) {
this.driver = driver;
}

public void enterSideLengths(String side1, String side2, String side3) throws Exception {
enterValueToElement(side1Element, side1);
enterValueToElement(side2Element, side2);
enterValueToElement(side3Element, side3);
waitUntilNewResultAppears(side1, side2, side3);
}

private void enterValueToElement(WebElement element, String value) {
element.clear();
element.sendKeys(value, Keys.ENTER);
}

public String triangleType() {
return triangleType.getText();
}

private void waitUntilNewResultAppears(String side1, String side2,
String side3) throws Exception {
long pollIntervall = 500;
int timeout = 30;

String xpath = String.format("//div[contains(@class, 'triangle_row') and div[1] = '%s' and div[2] = '%s' and div[3] = '%s']", side1, side2, side3);

int foundElements = driver.findElements(By.xpath(xpath)).size();
while (timeout > 0 && foundElements < 1) {
Thread.sleep(pollIntervall);
timeout--;
foundElements = driver.findElements(By.xpath(xpath)).size();
}
}

private String coordinates() {
return driver
.findElement(
By.xpath("//div[@id='triangles_list']/div[contains(@class, 'triangle_row')][1]/div[contains(@class, 'triangle_data_cell')][5]"))
.getText();
}

public boolean coordinatesAreValid() {
String coordinates = coordinates();

Matcher matcher = matchCoordinates(coordinates);

if (!matcher.find())
throw new IllegalArgumentException("coordinate row not found");

for (int matchCount = 1; matchCount <= matcher.groupCount(); matchCount++) {
String singleMatch = matcher.group(matchCount);
if (!isPositiveDigit(singleMatch))
throw new RuntimeException(String.format("negative coordinate found in '%s'", coordinates));
if (Double.parseDouble(singleMatch) > 200.0)
throw new RuntimeException(String.format("too large (> 200) coordinate found in '%s'", coordinates));
}
return true;
}

private Matcher matchCoordinates(String coordinates) {
Matcher matcher = coordinatePattern.matcher(coordinates);
return matcher;
}

private boolean isPositiveDigit(String singleMatch) {
return digitPattern.matcher(singleMatch).find();
}
}
}
7 changes: 7 additions & 0 deletions CucumberJVM/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?project=Triangle-Test-Sampler+CucumberJVM&amp;ivyXmlPath=ivy.xml&amp;confs=*"/>
<classpathentry kind="output" path="target/test-classes"/>
</classpath>
1 change: 1 addition & 0 deletions CucumberJVM/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
target
Loading