Skip to content

Commit

Permalink
Initial move over to Serenity from Thucydides
Browse files Browse the repository at this point in the history
  • Loading branch information
wakaleo committed Nov 5, 2014
0 parents commit 3049d14
Show file tree
Hide file tree
Showing 2,023 changed files with 304,921 additions and 0 deletions.
25 changes: 25 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
test*.db
.project
.gradle
.ignore
.settings
target
.idea
.classpath
.checkstyle
*.log
*.log.*
*.iml
*.versionsBackup
interpolated-*.xml
*.iws
*.ipr
out
*.ignore
build
bin
thucydides-arquillian
tools
*.sublime-project
*.sublime-workspace
.hg*
24 changes: 24 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
language: java
before_install:
- wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
- sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
- wget -N http://chromedriver.storage.googleapis.com/2.11/chromedriver_linux64.zip
- unzip chromedriver_linux64.zip
- chmod +x chromedriver
- sudo mv -f chromedriver /usr/local/share/chromedriver
- sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
- sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
- sudo apt-get update
- sudo apt-get install unzip
- sudo apt-get install google-chrome-stable
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"

script: gradle clean test integrationTests browserTests

cache:
directories:
- apt
- $HOME/.m2
- $HOME/.gradle
- $HOME/tools
42 changes: 42 additions & 0 deletions README.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
## Serenity - that feeling you get when you know you can trust your tests

Serenity (previously known as 'Thucydides') is a library designed to make writing automated acceptance tests easier,
and more fun.

## What does it do?

Serenity helps structure your automated acceptance tests in order to make them easier to understand and maintain,
and provides great reporting capabilties on top of tools like JBehave, Cucumber or JUnit. It also provides tight integration
with WebDriver, to make automated web testing easier and more efficient.

Serenity works in two ways:
- It instruments your test code and reports on the steps that your tests execute to achieve their goals, and stores the test
results in a standardized format;
- It aggregates these test results into clear and meaningful reports, that reflect not only the outcomes of your tests,
but also the status of your project. For example, you can get Serenity to report on what requirements, features or stories
you have implemented, and how well (or not) they were tested.

## History - Serenity and Thucydides

Serenity was originally called [Thucydides](https://github.com/thucydides-webtests), and the package structure still reflects this history.
Thucydides is discussed at length in the [BDD in Action](http://www.amazon.com/BDD-Action-Behavior-driven-development-lifecycle/dp/161729165X)
under the name *Thucydides* - everything discussed in "BDD in Action" is directly applicable for Serenity except for the artifact names.

*Thucydides* was renamed *Serenity* in November 2014, and moving forward, all new work will be done on Serenity. The artifact names reflect this change, e.g.
- *net.thucydides:thucydides-code* becomes *net.serenity:core*
- *net.thucydides:thucydides-junit* becomes *net.serenity:serenity-junit*
- *net.thucydides:thucydides-jbehave* becomes *net.serenity:serenity-jbehave*
- *net.thucydides:thucydides-cucumber* becomes *net.serenity:serenity-cucumber*

and so on.

## Useful links

COMING SOON

## Licensing

This distribution, as a whole, is licensed under the terms of the Apache License, Version 2.0

[![Build Status](https://snap-ci.com/thucydides-webtests/thucydides/branch/master/build_image)](https://snap-ci.com/thucydides-webtests/thucydides/branch/master)

226 changes: 226 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
buildscript {
repositories {
jcenter()
maven {
url 'https://geonet.artifactoryonline.com/geonet/public-releases'
}
}
dependencies {
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:0.6'
classpath 'nz.org.geonet:gradle-build-version-plugin:1.0.4'
}
}

allprojects {
apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'build-version'


buildVersion {
releaseTagPattern = "^v(\\d+\\.\\d+\\.\\d+)"
}

sourceCompatibility = 1.7
targetCompatibility = 1.7
group = 'net.serenity'
version = buildVersion.version

repositories {
mavenLocal()
jcenter()
}

ext {
bintrayBaseUrl = 'https://api.bintray.com/maven'
bintrayRepository = 'maven'
bintrayPackage = 'serenity-core'
projectDescription = 'Serenity core libraries'
if (!project.hasProperty("bintrayUsername")) {
bintrayUsername = 'wakaleo'
}
if (!project.hasProperty("bintrayApiKey")) {
bintrayApiKey = ''
}
}

task wrapper(type: Wrapper) {
gradleVersion = '2.1'
}

test {
exclude '**/*$*'
exclude '**/integration/**'
exclude '**/samples/**'
exclude '**/*Sample*'
minHeapSize = "128m"
maxHeapSize = "512m"
jvmArgs '-XX:MaxPermSize=256m'
}

task integrationTests(type: Test) {
exclude '**/*$*'
exclude '**/samples/**'
exclude '**/*Sample*'
exclude '**/integration/browsers**'
include '**/integration/**'
reports.junitXml.destination = "${buildDir}/reports/integration-tests"
reports.html.destination = "${buildDir}/reports/integration-tests"
minHeapSize = "128m"
maxHeapSize = "1024m"
jvmArgs '-XX:MaxPermSize=256m'
}

test {
testLogging {
exceptionFormat = 'full'
}
}

integrationTests {
testLogging {
exceptionFormat = 'full'
}
}


task browserTests(type: Test) {
exclude '**/*$*'
exclude '**/samples/**'
exclude '**/*Sample*'
exclude '**/*Base'
include '**/integration/browsers/**'
}

task javadoc(type: Javadoc, overwrite:true) {
source = sourceSets.main.allJava
options.memberLevel = JavadocMemberLevel.PUBLIC
options.addStringOption('views')
options.addStringOption('all')
options.addStringOption('quiet')
options.addStringOption('qualify')
options.addStringOption('Xdoclint:none')
classpath = configurations.compile
}

// integrationTests.dependsOn test
check.dependsOn -= integrationTests


dependencies {
compile "com.google.inject:guice:3.0"
compile "org.slf4j:slf4j-api:1.6.4"
testCompile "ch.qos.logback:logback-classic:1.0.13"
testCompile "junit:junit:4.11"
testCompile "org.hamcrest:hamcrest-integration:1.3"
testCompile "org.hamcrest:hamcrest-library:1.3"
testCompile "org.hamcrest:hamcrest-core:1.3"
testCompile('org.mockito:mockito-all:1.10.8') {
exclude group: "org.hamcrest"
}
testCompile("org.spockframework:spock-core:0.7-groovy-2.0") {
exclude group: "junit"
}
testCompile("com.github.goldin:spock-extensions:0.1.4") {
exclude module: "spock-core"
}
testCompile("org.codehaus.groovy:groovy-all:2.3.3")
testCompile("org.easytesting:fest-assert:1.4")
}

bintray {
user = bintrayUsername //this usually comes form gradle.properties file in ~/.gradle
key = bintrayApiKey //this usually comes form gradle.properties file in ~/.gradle
publications = ['mavenJava'] // see publications closure
pkg {
repo = 'maven'
userOrg = 'serenity'
name = 'serenity-core'
desc = 'Serenity core libraries'
licenses = ['Apache-2.0']
labels = ['serenity','bdd']
}
}
}

subprojects {
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}

artifacts {
archives sourcesJar, javadocJar
}


publishing {
publications {
mavenJava(MavenPublication) {

println "Publishing $project.name:$project.group:$project.version"

from components.java

artifact sourcesJar {
classifier "sources"
}

artifact javadocJar {
classifier "javadoc"
}

pom.withXml {
asNode().children().last() + {
resolveStrategy = Closure.DELEGATE_FIRST
name "$project.name"
description "$projectDescription"

url 'https://github.com/serenity-bdd/$project.name'
scm {
url 'scm:git:[email protected]:serenity-bdd/$project.name.git'
connection 'scm:git:[email protected]:serenity-bdd/$project.name.git'
developerConnection 'scm:git:[email protected]:serenity-bdd/$project.name.git'
}
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/license/LICENSE-2.0.txt'
distribution 'repo'
}
}
developers {
developer {
id 'johnsmart'
name 'John Ferguson Smart'
email '[email protected]'
}
}
}
// Preserve compile-scope dependencies
asNode().dependencies.'*'.findAll() {
it.scope.text() == 'runtime' && project.configurations.compile.allDependencies.find { dep ->
dep.name == it.artifactId.text()
}
}.each() {
it.scope*.value = 'compile'
}
}
}
}
}

tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:-options"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package net.thucydides.builds

class ProjectVersion {
final Integer major
final Integer minor
final String build

ProjectVersion(Integer major, Integer minor, String build) {
this.major = major
this.minor = minor
this.build = build
}

@Override
String toString() {
String fullVersion = "$major.$minor"
if (build) {
fullVersion += ".$build"
} else {
fullVersion += "-SNAPSHOT"
}
fullVersion
}
}
Loading

0 comments on commit 3049d14

Please sign in to comment.