Giter Site home page Giter Site logo

livingdoc-gradle's Introduction

livingdoc-gradle

LivingDoc Plugin for Gradle

Build Status

This plugin enables you to freeze and run any LivingDoc specifications as part of your build.

How to use the plugin

Currently, there is no official Gradle plugin available. In order to use this plugin you need to clone the repository and install the project artifact locally.

Clone project:

git clone [latest stable version](https://github.com/testIT-LivingDoc/livingdoc-gradle.git)

To install the project artifact locally run the install task within the project directory:

./gradlew install

As a result of the install task new livingdoc-gradle-${LIVINGDOC_GRADLE_VERSION}.jar is created. The created jar can be found in the local maven repository.

Apply the plugin to your project

In order to use the plugin you need an appropriate buildscript configuration:

buildscript {
  repositories {
    jcenter()
    mavenLocal() // used to get the latest version of the install livingdoc-gradle plugin
  }

  dependencies {
    classpath "info.novatec.testit:livingdoc-gradle:+" // get the plugin into the classpath
  }
}

apply plugin: 'livingdoc'

Available default configurations

As soon as the plugin is applied a livingdoc extension block is available

livingdoc {
  ...
}

as well as both default dependency configurations:

dependencies {
  livingdocCompile ...
  livingdocRuntime ...
}

Create an appropriate configuration

In order to use this plugin an appropriate configuration is needed e.g.:

livingdoc {
  fixtures {
    uiTest {
      fixtureSourceDirectory = file('path/to/the/fixtures/java')
      resources {
        uiTestResources {
          directory = file('path/to/the/fixtures/resources')
        }
      }
      systemUnderDevelopment = "info.novatec.testit.livingdoc.SystemUnderDevelopment"
      reportsType = "xml"
      debug = true
      sud = "sud_name"
    }
  }
  repositories {
    confluenceRepository {
      implementation = "info.novatec.testit.livingdoc.repository.FileSystemRepository"
      url = "http://localhost:1990/confluence/rpc/xmlrpc?handler=livingdoc1&sut=Demo&includeStyle=true&implemented=true#LIVINGDOCDEMO"
      uid = "Confluence-LIVINGDOCDEMO"
      freezeDirectory = file("${buildDir.path}/livingdoc/Demo Confluence-LDD")
      sortfilter {
        uiTests {
          path = "uiTests"
          filter = "*UITEST.html"
        }
      }
    }
  }
}

Available plugin functionality

There are lots of options that can be used to customize the plugin configuration. A list of all available plugin configuration options can be found below.

Available options within the livingdoc extension block

The livingdoc extension block can contains two different types of configurations a repositories configuration as well as a fixture configuration.

The repositories configuration closure is used to define one or more repositories which are used by freeze of the specifications e.g.

repositories {

  // a random name
  repository1 {

    // fully qualified name of your suit resolver class
    implementation = "info.novatec.testit.livingdoc.repository.FileSystemRepository"

    // the url to your confluence repository
    url = "${URL_ADDRESS}"

    // the repository uid
    uid = "${REPOSITORY_UID}"

    // optional, the local directory used to freeze the specifications
    freezeDirectory = file("${project.buildDir.path}/livingdoc/specs") // default

    // optional, can contains one or more filter configurations. If set the filter will be applied to the set of specifications that will be freezed
    sortfilter {

      // a random name
      filterIntTests {

        // the path where the specifications will be copied after the filter is applied
        path = "INTTESTS"

        // corresponds to the gradle copy task [includes](https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:includes)
        filter = "*INTTEST.html"

      }

      // a random name
      filterUiTests {

        // the path where the specifications will be copied after the filter is applied
        path = "UITESTS"

        // corresponds to the gradle copy task [includes](https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:includes)
        filter = "*UITEST.html"

      }

    }

  }

}

The fixtures configuration can contains one or more fixture configurations and represents a group of Java sources, resources and their configurations e.g.:

fixtures {

  // a random name, in order to identify the used sourceSet of resources
  uiTest {

    // the source directory of your fixtures
    fixtureSourceDirectory = file('path/to/the/fixtures/java')

    // optional, it can be used to specify resources that are used
    resources {

      // there can be one or more project resources
      uiTestResources {

        // directory for specific resources
        directory = file('path/to/the/fixtures/resources')

      }

    }

    // the download directory of the LivingDoc specifications, notice that this path represents the directory where the specifications are freezed
    specsDirectory = file('build/livingdoc/specs')

    //fully qualified name of your SystemUnderDevelopment class
    systemUnderDevelopment = "info.novatec.testit.livingdoc.systemunderdevelopment.DefaultSystemUnderDevelopment"

    // optional parameter, if empty the default html type is used
    reportsType = "xml"

    // optional parameter, default false
    debug = true

    sud = "sud_name"

    // optional, in case that additional run arguments are needed
    additionalRunArgs

    // optional, in case that additional classpath arguments are needed
    additionalRunClasspath

  }

}

livingdoc-gradle's People

Contributors

benhamidene avatar pkleimann avatar slu-it avatar

Watchers

Niko avatar

Forkers

benhamidene

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.