Serenity BDD is a test automation library designed to make writing automated acceptance tests easier, and more fun.

Overview

Serenity BDD

Gitter Continuous Integration

That feeling you get when you know you can trust your tests

Serenity BDD is a library designed to make writing automated acceptance tests easier, and more fun.

Learn more about Serenity, and discover tutorials, docs and more, on the official Serenity BDD website

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 Cucumber and JUnit. It also provides tight integration with WebDriver and RestAssured, to make both web testing and API 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.

Serenity makes your test cleaner

Serenity provides libraries and patterns that make it easier to write cleaner, more reusable code. It provides tight integration with Selenium WebDriver, and modern testing patterns such as Lean Page Objects, Action Classes, and the Screenplay Pattern. You can learn more about these patterns in this article.

Serenity makes your reports richer

Serenity reports aim to be more than simple test reports - they are designed to provide living documentation of your product. The reports give an overview of the test results:

Serenity Test Summary

But they also let you document your requirements hierarchy, and the state of the acceptance criteria associated with your requirements:

Serenity Requirements Summary

When you use BDD tools like Cucumber or JBehave, Serenity will include the feature details in a format that both team members and business folk can read:

Serenity Feature Details

And if you drill into the details, Serenity will give you a detailed account of how the test played out, including interactions and screenshots:

Serenity Test Details

Where can I learn more?

Check out Serenity BDD in more detail here:

Release Notes

Release notes are available for major releases:

What is the latest stable version I should use?

The tables below list the latest stable and tested versions of Serenity BDD and other related libraries.

Serenity with JUnit

serenity-core serenity-maven-plugin Selenium version RestAssured version Appium client version
2.3.12 2.3.12 3.141.59 4.3.2 7.3.0
2.3.5 2.3.5 3.141.59 4.3.1 7.3.0
2.3.4 2.3.4 3.141.59 3.3.0 7.2.0
2.2.12 2.2.12 3.141.59 3.3.0 7.2.0
2.2.5 2.2.5 3.141.59 3.3.0 7.2.0
2.2.2 2.2.2 3.141.59 3.3.0 7.2.0
2.2.0 2.2.0 3.141.59 3.3.0 7.2.0
2.1.5 2.1.5 3.141.59 3.3.0 7.2.0
2.1.0 2.1.0 3.141.59 3.3.0 7.2.0
2.0.90 2.0.90 3.141.59 3.3.0 7.2.0
2.0.84 2.0.84 3.141.59 3.3.0 7.2.0
2.0.71 2.0.71 3.141.59 3.3.0 7.2.0
2.0.69 2.0.69 3.141.59 3.3.0 7.0.0
2.0.56 2.0.56 3.141.59 3.3.0 7.0.0
2.0.52 2.0.52 3.141.59 3.3.0 7.0.0
2.0.48 2.0.48 3.141.59 3.3.0 7.0.0

Sample project: Serenity JUnit Starter Project.

Serenity with Cucumber

From version 2.3.x we will be supporting Cucumber 6 only.

Cucumber 6

serenity-core serenity-maven-plugin serenity-cucumber6 Cucumber
2.3.12 2.3.12 2.3.12 6.9.1
2.3.4 2.3.4 2.3.4 6.6.0
2.3.4 2.3.4 2.3.4 6.6.0
2.2.12 2.2.5 2.2.5 5.6.0
2.2.2 2.2.2 2.2.2 5.6.0
2.2.0 2.2.0 2.2.0 5.5.0

Sample project: Serenity Cucumber Starter Project.

Cucumber 4

Note: Cucumber 4 is no longer supported in newer versions of Serenity.

serenity-core serenity-maven-plugin serenity-cucumber4 Cucumber
2.1.5 2.1.5 2.1.2 4.8.0
2.1.0 2.1.0 2.1.0 4.8.0
2.0.90 2.0.90 1.0.29 4.8.0
2.0.84 2.0.84 1.0.21 4.2.0
2.0.69 2.0.69 1.0.18 4.2.0
2.0.56 2.0.56 1.0.15 4.2.0
2.0.54 2.0.54 1.0.14 4.2.0
2.0.52 2.0.52 1.0.14 4.2.0
2.0.48 2.0.48 1.0.12 4.2.0

Sample project: Serenity Cucumber 4 Starter Project.

Cucumber 2

Note: Cucumber 2 is no longer supported in newer versions of Serenity.

serenity-core serenity-maven-plugin serenity-cucumber Cucumber
2.1.5 2.1.5 1.9.50 2.4.0
2.0.90 2.0.90 1.9.49 2.4.0
2.0.84 2.0.84 1.9.48 2.4.0
2.0.69 2.0.69 1.9.45 2.4.0
2.0.56 2.0.56 1.9.40 2.4.0
2.0.54 2.0.54 1.9.39 2.4.0
2.0.52 2.0.52 1.9.39 2.4.0
2.0.48 2.0.48 1.9.37 2.4.0

Sample project: Serenity Cucumber Starter Project.

Serenity with JBehave

No new development is being done with the Serenity/JBehave integration. Latest versions should continue to work but new Cucumber-specific features may not.

serenity-core serenity-maven-plugin serenity-jbehave JBehave
2.0.52 2.0.52 1.0.46 4.5
2.0.42 2.0.48 1.0.45 4.5

Sample project: Serenity JBehave Starter Project.

Version number format

Serenity uses a three-digit version number notation, with the following meaning:

 <major>.<minor>.<build>

The first and second digits are for more significant updates, including new features or important bug fixes. The third is updated automatically for every new release, and is generated by the build process.

Commit message conventions

Commit messages are used to generate the release notes for each release. To do this, we loosely follow the AngularJS commit conventions: for commit messages to appear in the release notes, the title line needs to respect the following format:

  <type>: <message>

where is one of the following:

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
  • refactor: A code change that neither fixes a bug or adds a feature
  • perf: A code change that improves performance
  • test: Adding missing tests
  • chore: Changes to the build process or auxiliary tools and libraries such as documentation generation

Also commits can consists of several lines - to include some additional information in relase notes. For example:

feat: A new feature to make something better
now it will be available to call api.function() with additional parameters like api.function(Integer)

it will be included in release notes as:

  • feat: A new feature to make something better

    now it will be available to call api.function() with additional parameters like api.function(Integer)

Please take a look at release notes to find some more examples of mutiline commits.

For more information, read the Contributing guide for this repo.

Starting from version 1.1.26, any commits without one of these prefixes will not appear in the release notes.

Licensing

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

History - Serenity and Thucydides

Serenity was originally called Thucydides, and the package structure still reflects this history. Thucydides is discussed at length in the BDD in Action 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.

Found a bug? Please read this before you raise an issue.

If you have found a defect, we are keen to hear about it! But there are a few things you can do to help us provide a fix sooner:

Give as much context as possible.

Simply saying "The reports don't get generated" will not help us very much. Give as much context as possible, including:

  • Serenity version (serenity-core and the other serenity libraries, such as serenity-cucummber and serenity-jbehave)
  • If you are using Firefox, firefox and geckodriver version
  • If you are using Chrome, chrome and chromedriver version
  • What Operating System are you using

Also, make sure you try with the latest version of Serenity - your bug may already be fixed, and in any case error messages from the latest version will be more relevant when we try to track down the source of the problem.

Use living documentation

It is easier for us to fix something we can see breaking. If someone has to volunteer an hour of there time to reproduce a defect, Start of with one of the Serenity started projects (like this one and add a scenario or test case that both illustrates and describes your issue. If possible, write the test to describe the behaviour you expect, so that it fails when the defect is present, and that it will pass when the defect is fixed.

Submit a Pull Request

The fastest way to fix a defect is often to dig into the code and to submit a pull request.

Online Training

The Serenity Dojo provides a range of online courses to help you learn BDD and test automation with Serenity BDD.

Need Commercial Support?

If you are using Serenity for your company projects, and need faster or more in-depth support, why not ask your company to get some commercial support? We provide a range of support options including prioritied tickets, custom Serenity work, and remote mentoring/pair programming sessions, depending on your needs.

Take a look at this article for more information.

Comments
  • org.openqa.selenium.NoSuchElementException identifier strategy broken with latest version

    org.openqa.selenium.NoSuchElementException identifier strategy broken with latest version

    Below identifier was working with version 1.7.0 but broken in 1.8.3

    @iOSFindBy(xpath="//XCUIElementTypeButton[@name='button-lets-begin']")
        private WebElement LetsBeginButton;
    

    exception

    Can't locate an element by this strategy: Locator map: 
    - native content: "By.id: LetsBeginButton" 
    - html content: "by id or name "LetsBeginButton""
    
    opened by vikramvi 91
  • Unsupported image type exceptions and hang encountered

    Unsupported image type exceptions and hang encountered

    I am seeing the following output recently in my logging:

    00:21:44 Exception in thread "pool-1-thread-3" net.thucydides.core.reports.ReportGenerationFailedError: Failed to generate reports using net.thucydides.core.reports.html.HtmlAcceptanceTestReporter@110bd1ea 00:21:44 at net.thucydides.core.reports.ReportService.generateReportFor(ReportService.java:179) 00:21:44 at net.thucydides.core.reports.ReportService.access$100(ReportService.java:22) 00:21:44 at net.thucydides.core.reports.ReportService$1.run(ReportService.java:113) 00:21:44 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 00:21:44 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 00:21:44 at java.lang.Thread.run(Thread.java:745) 00:21:44 Caused by: java.io.IOException: Unsupported image type 00:21:44 at net.thucydides.core.images.SimpleImageInfo.processStream(SimpleImageInfo.java:63) 00:21:44 at net.thucydides.core.images.SimpleImageInfo.(SimpleImageInfo.java:44) 00:21:44 at net.thucydides.core.images.ResizableImage.(ResizableImage.java:33) 00:21:44 at net.thucydides.core.images.ResizableImage.loadFrom(ResizableImage.java:37) 00:21:44 at net.thucydides.core.reports.html.HtmlAcceptanceTestReporter.maxHeightOf(HtmlAcceptanceTestReporter.java:233) 00:21:44 at net.thucydides.core.reports.html.HtmlAcceptanceTestReporter.maxScreenshotHeightIn(HtmlAcceptanceTestReporter.java:226) 00:21:44 at net.thucydides.core.reports.html.HtmlAcceptanceTestReporter.expandScreenshots(HtmlAcceptanceTestReporter.java:193) 00:21:44 at net.thucydides.core.reports.html.HtmlAcceptanceTestReporter.generateScreenshotReportsFor(HtmlAcceptanceTestReporter.java:178) 00:21:44 at net.thucydides.core.reports.html.HtmlAcceptanceTestReporter.generateReportFor(HtmlAcceptanceTestReporter.java:88) 00:21:44 at net.thucydides.core.reports.ReportService.generateReportFor(ReportService.java:177) 00:21:44 ... 5 more

    This appears to happen after all the tests have run and the report is being generated. I've recently started using Serenity 1.1.14 though I'm not 100% convinced that correlates. What may be a contributing factor are newly added tests which loop through about 20 different locales verifying links for each locale.
    My screen capture setting is the default (before and after). We are using Java 1.7 + Junit + Serenity 1.1.14 + Saucelabs. This particular failure happened on Win8.1 + IE 11.

    Then, the build runs endlessly: 00:21:45 2015-10-10T00:21:22.634-0700 ... [pool-1-thread-4] INFO net.thucydides.core.reports.ReportService$1.run:115 Processing test outcome Verify and save analytics account:invalidUsername done 02:16:57 Build timed out (after 240 minutes). Marking the build as aborted. (Notice that Jenkins aborts the build after 240 mins) The last thing that was executed that seems to hang is: net.thucydides.core.reports.ReportService

    bug 
    opened by rjrussell77 44
  • Serenity with Appium Could not instantiate class io.appium.java_client.AppiumDriver

    Serenity with Appium Could not instantiate class io.appium.java_client.AppiumDriver

    ERROR net.thucydides.core.webdriver.WebDriverFacade - FAILED TO CREATE NEW WEBDRIVER_DRIVER INSTANCE class io.appium.java_client.AppiumDriver: Could not instantiate class io.appium.java_client.AppiumDriver net.thucydides.core.webdriver.UnsupportedDriverException: Could not instantiate class io.appium.java_client.AppiumDriver

    Serenity Property file:- webdriver.wait.for.timeout = 1000

    webdriver.driver= appium

    webdriver.base.url = http://www.google.com/

    appium.hub = http://127.0.0.1:4723/wd/hub

    appium.platformName = Android

    appium.platformVersion = 5.1.1

    appium.deviceName = e2f5c460

    appium.browserName = Chrome

    bug 
    opened by RJ05 41
  • webdriver.driver property is ignored

    webdriver.driver property is ignored

    I'm running serenity with the gradle plugin (V1.1.13) and serenity cucumber (V1.1.1). No matter how I try to configure which webdriver to use, serenity always uses Firefox. I tried setting it via command line (-Dwebdriver.driver=..., resp. Ddriver=...) as well as in the serenity.properties. I also already tried all supported settings for the driver (chrome, firefox, iexplorer and phantomjs), but the setting is ignored. Am I missing something?

    opened by cmurczek 39
  • RequirementsTagProvider - Failed to load requirements: null java.util.ConcurrentModificationException

    RequirementsTagProvider - Failed to load requirements: null java.util.ConcurrentModificationException

    Getting this seldomly, but still:

     [pool-2-thread-8] WARN RequirementsTagProvider - Failed to load requirements: null
    java.util.ConcurrentModificationException
    	at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
    	at java.util.ArrayList$Itr.next(ArrayList.java:859)
    	at net.thucydides.core.requirements.AllRequirements.in(AllRequirements.java:17)
    	at net.thucydides.core.requirements.FileSystemRequirementsTagProvider.getRequirementFor(FileSystemRequirementsTagProvider.java:426)
    	at net.thucydides.core.requirements.FileSystemRequirementsTagProvider.mostSpecificTagRequirementFor(FileSystemRequirementsTagProvider.java:360)
    	at net.thucydides.core.requirements.FileSystemRequirementsTagProvider.getParentRequirementOf(FileSystemRequirementsTagProvider.java:339)
    	at net.thucydides.core.requirements.ParentRequirementsProvided.forOutcome(ParentRequirementsProvided.java:26)
    	at net.thucydides.core.requirements.BaseRequirementsService.getParentRequirementOf(BaseRequirementsService.java:143)
    	at net.thucydides.core.requirements.BaseRequirementsService.getAncestorRequirementsFor(BaseRequirementsService.java:90)
    	at net.thucydides.core.tags.BreadcrumbTagFilter.getRequirementBreadcrumbsFrom(BreadcrumbTagFilter.java:50)
    	at net.thucydides.core.reports.html.HtmlAcceptanceTestReporter.addBreadcrumbs(HtmlAcceptanceTestReporter.java:198)
    	at net.thucydides.core.reports.html.HtmlAcceptanceTestReporter.addParentRequirmentFieldToContext(HtmlAcceptanceTestReporter.java:186)
    	at net.thucydides.core.reports.html.HtmlAcceptanceTestReporter.addTestOutcomeToContext(HtmlAcceptanceTestReporter.java:162)
    	at net.thucydides.core.reports.html.HtmlAcceptanceTestReporter.generateScreenshotReportsFor(HtmlAcceptanceTestReporter.java:225)
    	at net.thucydides.core.reports.html.HtmlAcceptanceTestReporter.generateReportFor(HtmlAcceptanceTestReporter.java:109)
    	at net.thucydides.core.reports.ReportService.generateReportFor(ReportService.java:239)
    	at net.thucydides.core.reports.ReportService.lambda$generateReportsFor$0(ReportService.java:175)
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:748)
    
    opened by kutzi 38
  • Serenity summary file alignment is not correct

    Serenity summary file alignment is not correct

    Hi,

    When I used Email-ext plugin to send the serenity-summary.html to my gmail box. It is distorted. The same project is https://github.com/ahuja-ankur/sample-Proj.git

    Please help.

    image

    release pending 
    opened by ahuja-ankur 34
  • Cucumber Aggregate Report Error Jenkins

    Cucumber Aggregate Report Error Jenkins

    @wakaleo

    Failed to aggregate report when running in Jenkins.

    Note: Able to run properly in Jenkins

    [ERROR] Failed to execute goal net.serenity-bdd.maven.plugins:serenity-maven-plugin:2.2.0:aggregate (serenity-reports) on project ph-auto-serenity-cucumber: Execution serenity-reports of goal net.serenity-bdd.maven.plugins:serenity-maven-plugin:2.2.0:aggregate failed: Unable to provision, see the following errors: [ERROR] [ERROR] 1) Error in custom provider, com.typesafe.config.ConfigException$BadPath: path parameter: Invalid path 'PATH+CHROMEDRIVER': Token not allowed in path expression: 'C' ('+' not followed by =, 'C' not allowed after '+') (you can double-quote this token if you really want it here) [ERROR] at net.thucydides.core.guice.ThucydidesModule.provideEnvironmentVariables(ThucydidesModule.java:78) [ERROR] while locating net.thucydides.core.util.EnvironmentVariables

    Serenity-maven <plugin> <groupId>net.serenity-bdd.maven.plugins</groupId> <artifactId>serenity-maven-plugin</artifactId> <version>${serenity.maven.version}</version> <dependencies> <dependency> <groupId>net.serenity-bdd</groupId> <artifactId>serenity-core</artifactId> <version>${serenity.version}</version> </dependency> </dependencies> <executions> <execution> <id>serenity-reports</id> <phase>post-integration-test</phase> <goals> <goal>aggregate</goal> </goals> </execution> </executions> </plugin>

    can't-fix 
    opened by jayzsuarez 34
  • gradle aggregate task fails with Java 11

    gradle aggregate task fails with Java 11

    When running the aggregate task with Java 11, it fails to find the feature files. (Serenity 2.0.30, serenity-cucumber 1.9.22) E.g.

    Found no Cucumber 2.x.x class cucumber.runtime.model.CucumberFeature failed loading CucumberFeatures 
    java.lang.reflect.InvocationTargetException
            at jdk.internal.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)
            at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.base/java.lang.reflect.Method.invoke(Method.java:566)
            at net.thucydides.core.requirements.model.cucumber.CucumberParser.loadCucumberFeatures(CucumberParser.java:99)
            at net.thucydides.core.requirements.model.cucumber.CucumberParser.loadFeature(CucumberParser.java:71)
            at net.thucydides.core.requirements.model.cucumber.CucumberParser.loadFeatureNarrative(CucumberParser.java:109)
            at net.thucydides.core.requirements.FileSystemRequirementsTagProvider.loadFromFeatureFile(FileSystemRequirementsTagProvider.java:584)
            at net.thucydides.core.requirements.FileSystemRequirementsTagProvider.readRequirementsFromStoryOrFeatureFile(FileSystemRequirementsTagProvider.java:541)
            at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
            at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
            at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
            at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
            at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
            at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
            at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
            at net.thucydides.core.requirements.FileSystemRequirementsTagProvider.loadStoriesFrom(FileSystemRequirementsTagProvider.java:523)
            at net.thucydides.core.requirements.FileSystemRequirementsTagProvider.getRequirements(FileSystemRequirementsTagProvider.java:159)
            at net.thucydides.core.requirements.RequirementsProvided.by(RequirementsProvided.java:15)
            at net.thucydides.core.requirements.reports.MultipleSourceRequirmentsOutcomeFactory.buildRequirementsOutcomesFrom(MultipleSourceRequirmentsOutcomeFactory.java:56)
            at net.thucydides.core.reports.html.HtmlAggregateStoryReporter.generateReportsForTestResultsIn(HtmlAggregateStoryReporter.java:152)
            at net.thucydides.core.reports.html.HtmlAggregateStoryReporter.generateReportsForTestResultsFrom(HtmlAggregateStoryReporter.java:134)
            at net.thucydides.core.reports.UserStoryTestReporter$generateReportsForTestResultsFrom.call(Unknown Source)
            at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
            at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
            at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
            at net.serenitybdd.plugins.gradle.SerenityPlugin$_apply_closure1$_closure9.doCall(SerenityPlugin.groovy:54)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at 
    ...
    Caused by: java.lang.IllegalArgumentException: Not a file or directory: /home/christoph.kutzinski/.gradle/daemon/5.1/src/test/groovy/features/OphiocordycepsRewriteRules.feature
            at cucumber.runtime.io.FileResourceIterator$FileIterator.<init>(FileResourceIterator.java:63)
            at cucumber.runtime.io.FileResourceIterator.<init>(FileResourceIterator.java:28)
            at cucumber.runtime.io.FileResourceIterator.createFileResourceIterator(FileResourceIterator.java:14)
            at cucumber.runtime.io.FileResourceIterable.iterator(FileResourceIterable.java:19)
            at cucumber.runtime.model.CucumberFeature.loadFromFeaturePath(CucumberFeature.java:112)
            at cucumber.runtime.model.CucumberFeature.load(CucumberFeature.java:49)
            ... 106 more
    
    can't-fix 
    opened by kutzi 34
  • Tests with Serenity version 2.4.44 run significantly slower than with 2.4.4

    Tests with Serenity version 2.4.44 run significantly slower than with 2.4.4

    I test a page that is quite long.

    When running the tests with version 2.4.44 each page gets visibly scrolled down in several increments every time something is done on that page. The scrolling is quite slow.

    The configuration that shows this behaviour is

    • Serenity version 2.4.44 plus serenity.full.page.screenshot.strategy = true

    Following configuration does not show this behaviour

    • Serenity version 2.2.44 plus serenity.full.page.screenshot.strategy = false
    • Serenity version 2.2.4 plus serenity.full.page.screenshot.strategy = true or false
    opened by SchnuckySchuster 33
  • Cucumber+Serenity BDD with JIRA Two way Integration

    Cucumber+Serenity BDD with JIRA Two way Integration

    Hi Liviu Carausu,

    I am currently developing my Framework by integrating serenity with my cucumber scenarios and its in enhancement stage. But I am really held back because of following issues.

    Issue1: I am using Serenity with Cucumber and I am successfully able to integrate with JIRA [One Way Integration]. But Two way integration is not working, requirements are getting merged but not updated in JIRA.

    Please find the POM, Console log and Property file

    Console log.txt Property File.txt pom.txt

    Groovy File Content : when 'TO DO', { 'success' should: 'In Progress' }

    when 'IN PROGRESS', { 'success' should: 'DONE' }

    when 'DONE', { 'failure' should: 'TO DO' }

    Feature File @issue:AMS-2 Scenario: Login Given I navigate to XXX Login Page When I provide XXXXame and XXXXord And I Click on Login button Then Home Page should be Displayed

    @issue:AMS-3 Scenario: XXXXee Creation Form Verification Given I am in XXX Home Page When I clcik on XXXXXXes button And I click on XXXXXyee button Then Add New XXXXyee form should be displayed

    JIRA Configuration: JIRA Project Name :XXX , Issue: XXX-2, XXX-3 Version: Release1

    Issue2: I have installed JIRA in my local with sample project, Report is correctly fetching the reuirements but it doesnt have Automated Test and coverage too. Please find that screen shot below stories section in serenity report, Requirement Part in Serenity report works fine

    Thanks, Guru

    opened by Gurunathan5029 33
  • JIRA issue status not getting updated

    JIRA issue status not getting updated

    Hello!

    1. This is my serenity.properties file:
    JIRA SETTINGS

    jira.url=https://_.atlassian.net jira.project= jira.username=_ jira.password=**** serenity.use.requirements.directories=false serenity.public.url=*****

    update the status of JIRA issues

    serenity.jira.workflow.active=true serenity.jira.workflow=jira-workflow.groovy

    1. jira-workflow.groovy is in src/test/resources

    2. The JIRA issue status is In Progress.

    3. The workflow states: when 'In Progress', { 'success' should: 'In Review' }

    4. Now when I run it, this is what I see in log. DO not understand why it is updating it twice? 28344 [main] INFO net.serenitybdd.plugins.jira.JiraListener - Updating JIRA issue: TJSP-52 28344 [main] INFO net.serenitybdd.plugins.jira.JiraListener - JIRA server: Connection to JIRA instance at https://***.atlassian.net with user *** 28344 [main] INFO net.serenitybdd.plugins.jira.JiraListener - Updating comments for issue TJSP-52 28345 [main] INFO net.serenitybdd.plugins.jira.JiraListener - WIKI Rendering activated: true 31494 [pool-1-thread-3] INFO net.serenitybdd.plugins.jira.JiraListener - Updating JIRA issue: TJSP-52 31494 [pool-1-thread-3] INFO net.serenitybdd.plugins.jira.JiraListener - JIRA server: Connection to JIRA instance at https://***.atlassian.net with user *** 31494 [pool-1-thread-3] INFO net.serenitybdd.plugins.jira.JiraListener - Updating comments for issue TJSP-52 31494 [pool-1-thread-3] INFO net.serenitybdd.plugins.jira.JiraListener - WIKI Rendering activated: true

    5. The issue status is not changed and remains as it is.

    6. Using serenity-jira-requirements-provider version 1.1.2-rc.1

    opened by amitAutoS 33
  • Getting  RemoteWebDriver cannot be cast to io.appium.java_client.AppiumDriver error

    Getting RemoteWebDriver cannot be cast to io.appium.java_client.AppiumDriver error

    With serenity version 3.4.2 i am getting .RemoteWebDriver cannot be cast to io.appium.java_client.AppiumDriver error while reading android properties from Serenity.conf , and when I am trying to retrieve getDriver() i am getting Driver :Uninitialised WebDriverFacade

    Sample config file environments{ android { webdriver{ driver = "remote" remote{ url="http://localhost:4723/wd/hub" driver = "appium" } capabilities { app= "App path" appPackage="Package Path" platformName="Android" platformVersion="7.1.1" deviceName="emulator-5554"
    autoGrantPermissions= true } } } }

    Run command : mvn clean verify -D environment=android

    Earlier with serenity 3.1.5 I am maintained serenity.conf as below and able to run mobile tests successful android { webdriver.driver = "remote" webdriver.remote.driver="appium" webdriver.remote.url="http://localhost:4723/wd/hub" appium.app="$Path to apk" appium.appPackage="path to package" appium.platformName="Android" appium.platformVersion="7.1.1" appium.deviceName="emulator-5554"
    }

    can this issue is a configuration issue ?

    opened by Ramesh1103 4
  • Unable to pass applicationName as capability in serenity.driver.capabilities

    Unable to pass applicationName as capability in serenity.driver.capabilities

    Recently migrated to selenium grid 4. We use serenity framework and was using serenity.driver.capabilities= ApplicationName:value for reading custom capability.

    In selenium 4 now need to mention

    “networkName:applicationName”: “value” “Nodename:applicationName “:”nodeName”

    But when I read as Serenity.driver.capabilities=Nodename:applicationName:value

    or with networkName.

    it’s not pulling the selenium node.

    Since selenium 3 had applicationName as capability, serenity.driver.capabilities =applicationName:value works …

    how can I use the serenity.driver.capabilities in case of selenium 4

    opened by remyanekkuth 2
  • Execution of Serenity Jbehave based framework on Azure cloud

    Execution of Serenity Jbehave based framework on Azure cloud

    Hello, Is their a way by which I can execute my Serenity based automation framework on Azure cloud. Currently the execution is performed using jenkins but going ahead it needs to be done via Azure ADO. I couldn't find any plugin for Serenity on Azure marketplace. So if anyone has tried this before then please post your suggestions. Thanks.

    question 
    opened by HS23101997 0
  • Serenity webdriver

    Serenity webdriver

    Am getting below error at starting of the execution or at the end of execution [AsyncHttpClient-1-3] WARN o.a.netty.handler.WebSocketHandler - onError java.net.SocketException: Connection reset at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:259) at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:357) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:1589) Dec 28, 2022 1:42:21 PM org.openqa.selenium.remote.http.WebSocket$Listener onError WARNING: Connection reset java.net.SocketException: Connection reset at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401) at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434) at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:259) at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:357) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:1589) Can someone say, Why I am getting this error.

    question 
    opened by cb-rajeshkumar 1
Releases(3.2.0)
  • 3.2.0(Feb 11, 2022)

    Serenity 3.2.0 contains a number of bug fixes and enhancements, including:

    • Improved performance in report generation
    • Updated the Page Elements API (https://serenity-bdd.github.io/documentation/docs/guide/page_elements)
    • Improved requirements reporting to include more comprehensive requirements tables and better support for deep requirements hierarchies
    • Collections of elements retrieved with findAll() methods and then processed (e.g. findAll(".myelements").texts()) will now automatically requery if a stale element exception occurs. You can disable this behaviour by setting the webdriver.retry.on.stable.element.exception property to false.
    • Improved Playwright/Screenplay integration
    • Support for @singlebrowser annotation in Cucumber scenarios
    • Bug fixes include:
      • #2687
      • #2693
      • #2660
      • #2667
      • #2655
    Source code(tar.gz)
    Source code(zip)
  • 3.1.20(Jan 30, 2022)

  • 3.1.15(Dec 23, 2021)

    This release includes support for Selenium 4.1.1 and Cucumber 7, as well as various bug fixes. We have also introduced beta support for Playwright using Screenplay.

    Source code(tar.gz)
    Source code(zip)
  • serenity-bdd-3.1.0(Nov 26, 2021)

    Serenity 3.1.0 is a major new release of Serenity BDD. Some of the more significant changes include:

    • Integration with Selenium 4 and Appium 8
    • Improved reporting, including reporting on test duration
    • New responsive report layout
    • Use the serenity.report.accesibility property to render reports using patterns instead of plain colors
    • Filtering Cucumber scenarios (e.g. using the "cucumber.filter.tags" option will now exclude filtered features from appearing in the reports, allowing more focused reporting)
    • Added the WebDriverManagerEnhancer interface, which allows you to write custom code to integrate with the more advanced WebDriverManager features from within Serenity.
    • Chrome is now the default browser
    • Added the SingleBrowser annotation and tag which can be used in JUnit or Cucumber to run all the scenarios in a test suite, feature or scenario outline in a single browser instance
    • Added the InTheBrowser task which makes it easier to perform direct WebDriver operations from within a Screenplay task.

    For more details about the new features read this article.

    Source code(tar.gz)
    Source code(zip)
  • 2.6.0(Aug 31, 2021)

    Serenity 2.6.0 is a major update that adds beta support for JUnit5.

    • In comparison with the JUnit4 integration, for JUnit5 tests no additional annotation is needed. Short overview of supported features/annotations
    • Tagging : @Tag("type:name") - mvn clean verify -Dtags="type:name"
    • Data Driven tests: @ParameterizedTest,@ValueSource,@EnumSource,@CsvFileSource
    • Nested tests: @Nested
    • @DisplayName for methods

    The following plugins must be upgraded to the version 3.0.0-M5

    • maven-surefire-plugin
    • maven-failsafe-plugin

    A big callout to @cliviu who spearheaded this module!

    Source code(tar.gz)
    Source code(zip)
  • v2.3.10(Jan 3, 2021)

    Release of 2.3.10

    • Updated test cases
    • Updated test cases
    • Support for Gherkin Rules in reports (#2346)
    • add new Switch Tasks (#2334)
    • fix: instance of driver in steps should point to separate object for every test, executed in parallel (#2333)
    • Added By selector for Shadow Dom elements (#2341)
    • wording and formatting like the other reports
    • Minor refactoring
    Source code(tar.gz)
    Source code(zip)
  • v2.3.9(Dec 8, 2020)

    • correct the check for value attribute (#2329)
    • bug FIX a bug that causes current context to be override when calling getEnvironmentVariables method in TestOutcome (#2326)
    • feat: CheckCheckbox interaction (#2325)
    • Bump junit from 4.8.1 to 4.13.1 in /serenity-demo (#2266)
    • Bump junit from 4.12 to 4.13.1 in /serenity-smoketests (#2267)
    • Bump junit from 4.12 to 4.13.1 in /serenity-appium-screenplay-poc (#2268)
    • Bump junit from 4.12 to 4.13.1 in /serenity-appium (#2269)
    • Bump junit from 4.12 to 4.13.1 in /serenity-mobile-screenplay-example (#2272)
    • Consider annotations on non-public test methods (TestAnnotations.getMethodCalled) (#2306)
    • Merge pull request #2307 from fabianlinz/unused_manual_code
    • Merge pull request #2304 from SiKing/feature/expand_getTextValue
    • Merge pull request #2323 from tlinkowski/response-decorated-as
    • Add missing as() overrides to ResponseDecorated
    • feat: smartbear crossbrowsertesting support (#2316)
    • Add support to hide rest queries using screenplay (#2315)
    • feat: report navigator templates v0.2.9
    • Remove unused code for @Manual handling
    • textarea also has a 'value'
    • feat: report navigator templates v0.2.8
    • Ignore stacktrace element for inner interfaces and inner or anonymous classes without a superclass (#2229) (#2295)
    • feat: report navigator templates v0.2.7
    • feat: report navigator templates v0.2.6
    • fix: no report "navigator" found in classpath
    Source code(tar.gz)
    Source code(zip)
  • v2.3.8(Nov 12, 2020)

  • v1.1.37-rc.6(Jun 29, 2016)

  • v1.1.37-rc.5(Jun 21, 2016)

    Pull requests:

    • #454 Add ability to assert that matched element is not present in collection (#453) (@viktor-klymenko)

    Commits:

    • 1010a8d feat: add ability to assert that matched element is not present in collection (@viktor-klymenko)

      now it is possible to assert that element is not present in collection using BeanMatcherAsserts.shouldNotMatch(List<T> items, BeanMatcher... matchers) method

    Source code(tar.gz)
    Source code(zip)
  • v1.1.37-rc.4(Jun 21, 2016)

  • v1.1.37-rc.3(Jun 21, 2016)

  • v1.1.37-rc.2(Jun 21, 2016)

    Commits:

    • 62dc5f6 feat: Improved handling of soft asserts (@wakaleo)

      You can now use soft asserts to combine a task to be executed, and a check to perform, optionally annotated with a business rule. This makes it much easier to check several business or validation rules on the same screen, in the same test. Sample code: ''' then(alice).should( seeThat(TheValidationMessages.displayed(), reportsErrors("BSB must be 6 digits")). whenAttemptingTo(EnterABankAccount.bsbValueOf("1234")). because("BSB cannot be a number with less than 6 digits"), seeThat(TheValidationMessages.displayed(), reportsErrors("BSB must be 6 digits")). whenAttemptingTo(EnterABankAccount.bsbValueOf("qwerty")). because("BSB cannot have alphabetical characters"), seeThat(TheValidationMessages.displayed(), reportsErrors("BSB must be 6 digits")). whenAttemptingTo(EnterABankAccount.bsbValueOf("~!@#$%^&*(")). because("BSB cannot have symbols"), ); '''

    • 8e5571c feat:Added extra diagnostics for the Check gradle and maven tasks (@wakaleo)

    • a36b539 refactor: hardening time-based tests and minor refactoring. (@wakaleo)

    • a5755b7 refactor: test refactoring (@wakaleo)

    Source code(tar.gz)
    Source code(zip)
  • v1.1.37-rc.1(Jun 21, 2016)

  • v1.1.36(Jun 7, 2016)

    Commits:

    • 0222177 refactor: Renamed the 'browse-the-web' module (@wakaleo)

      Renamed the 'browse-the-web' module to 'serenity-screenplay-webdriver' for more consistancy.

    • 0ea09c7 fix: Fixed an issue with the screenplay webdriver integration (@wakaleo)

      Browser windows were not closing correctly when there were more than one driver used in a single test.

    • de85892 chore: General refactoring and fixing minor performance issues. (@wakaleo)

    • e9f8131 fix: Fixed an issue where the screenplay module was not closing the last browser if several browsers were being used in a test (@wakaleo)

    Source code(tar.gz)
    Source code(zip)
  • v1.1.35(Jun 2, 2016)

  • v1.1.34(Jun 2, 2016)

  • v1.1.32-rc.2(Jun 2, 2016)

    Pull requests:

    Commits:

    • 32b0850 fix: Fixed #227 - issue with resetImplicitTimeout (@wakaleo)
    • 3bbb0c0 fix: updated implementation to support multiple constructors in steps libraries (@YamStranger)
    • 3df916a test: added test to check how serenity works with multiple constructors in step libraries (@YamStranger)
    • 70c7680 fix: Fixed issues that resulted in declared drivers not being reported correctly. (@wakaleo)
    • 837dc49 fix: Wrong wrapping params in step name (#246) and Assertion messages are displayed incompletely in report in case of failure (#380) (@wakaleo)
    • b491091 fix: Fixed an issue where tests that failed when using the @Test expected attribute where not being reported correctly. (@wakaleo)
    • b50a1f8 test: fixed test to work with new isAlive implementation (@YamStranger)
    • b902c2e fix: updated isAlive implementation to work with appium (@YamStranger)
    • bea7f47 feat: updated rest report template (@YamStranger)
    • cc81c5f fix:Fixed a reporting issue with the PageTitleQuestion class (@wakaleo)
    • fab8b79 fix: fixed alive function to work with appium (@YamStranger)
    Source code(tar.gz)
    Source code(zip)
  • v1.1.32-rc.1(May 4, 2016)

  • v1.1.31(Apr 20, 2016)

    Pull requests:

    • #358 Rest core updated. Fixed issues with reason in old structure (@YamStranger)

    Commits:

    • 117dbf2 feat: serenity rest core updated to return updated configurations, filters, etc. (@YamStranger)

    • 2787384 feat: serenity-rest implemented recording of boyd, content-type, path, method, prepared recoding structure (@YamStranger)

      Now it will be is easy to include in restQuery recording info about cookies, headers, and so on using filtering RestAssured mechanism

    • 2d4719b feat: serenity-rest supported sequences of operations in different steps: (@YamStranger)

      Now it is possible run sequence of rest operations, with restspecification and response shared in one thread:

      class RestSteps {
      [@Ste](https://github.com/Ste)p
      def successfulGet(final String url) {
      given().get(&quot;$url/{id}&quot;, 1000).then().body(&quot;id&quot;, Matchers.equalTo(1000));
      }
      [@Ste](https://github.com/Ste)p
      def getById(final String url) {
      rest().get(&quot;$url/{id}&quot;, 1000);
      }
      [@Ste](https://github.com/Ste)p
      def thenCheckOutcome() {
      then().body(&quot;Id&quot;, Matchers.anything())
      }
      }
      
    • 52e54a9 feat: implemented wrapping of request specification after multypart request configurations (@YamStranger)

    • 5b6c531 feat: implemented wrapping of request after configuring cookies (@YamStranger)

      Now serenity rest will work correctly after operations like below:

      given().cookies(mapWithCookies).get(url)
      given().cookies(&quot;value&quot;).get(url)
      given().cookies(&quot;value&quot;, param).get(url)
      
    • 5bdeda5 feat: serenity-rest implemented wrapping for all requests in SerenityRest class, all covered by tests (@YamStranger)

    • 7c0f58a test: added test to ceheck wrapping after cookie operations (@YamStranger)

    • 7d5f5c8 test: implemented test for wrapping request with configured multipart request (@YamStranger)

    • 8040ade feat: serenity-rest implemented recording of all basic fields, like status-code, body, path, method. Implemented recoding of exceptions. (@YamStranger)

      Now all operations will be recorded, after request executed, in report all fields will appear in same format as send. After this update content/body should be matched with additional transformation, because if string contains json/xml it will be reformatted by RestAssured, for example for Json it can be:

      ...
      import static net.serenitybdd.rest.staging.JsonConverter.*;
      ...
      assert formatted(query.responseBody) == formatted(body)
      

      Introduced DecomposedContentType class for representation simple content types: if in rest assured defined only:

      ANY(&quot;*/*&quot;),
      TEXT(&quot;text/plain&quot;),
      JSON(&quot;application/json&quot;, &quot;application/javascript&quot;, &quot;text/javascript&quot;),
      XML(&quot;application/xml&quot;, &quot;text/xml&quot;, &quot;application/xhtml+xml&quot;),
      HTML(&quot;text/html&quot;),
      URLENC(&quot;application/x-www-form-urlencoded&quot;),
      BINARY(&quot;application/octet-stream&quot;);
      

      not it will be possible define something like that given().contentType(&quot;$APPLICATION_JSON&quot;) for:

      ANY(&quot;*/*&quot;),
      TEXT(&quot;text/plain&quot;),
      APPLICATION_JSON(&quot;application/json&quot;),
      APPLICATION_JAVASCRIPT(&quot;application/javascript&quot;),
      APPLICATION_XML(&quot;application/xml&quot;),
      TEST_XML(&quot;text/xml&quot;),
      APPLICATION_XHTML_XML(&quot;application/xhtml+xml&quot;),
      TEST_JAVASCRIPT(&quot;text/javascript&quot;),
      HTML(&quot;text/html&quot;),
      URLENC(&quot;application/x-www-form-urlencoded&quot;),
      BINARY(&quot;application/octet-stream&quot;);
      

      as well as find some RestAssured content type by DecomposedContentType or String:

      DecomposedContentType.byString(&quot;application/javascript; Charset: UTF-8&quot;).contentType()
      
    • 8d3e5c9 feat: serenity rest core decomposed to make possible to use different classes for different purposes. (@YamStranger)

      Now it is possible to execute almost all serenity rest operations using SerenityRest (90+ methods) or use smaller classes: RestDefaults (50+ methods)can be used for configuratins only default parameters RestRequests (20+ methods)can be used for making requests RestUtility (20+ methods)can be used for initialising some default or reusable objects

    • a608efe feat: serenity-rest-assured updated rest core and tests, renamed some classes (@YamStranger)

    • ae9e4a8 feat: serenity-core updated restQuery and reports to include Cookies and headers, changed wrapping of request and response (@YamStranger)

    • b99deb4 test: serenity-rest created test to check how dryRun works for serenity rest (@YamStranger)

    • ca6690e test: serenity-rest implemented test to check if body, contenttype, responce is recorded (@YamStranger)

    • d869ad2 test: serenity-rest implemented tests to check how recording of rest requests and reponses works (@YamStranger)

    • de2dc5e feat: implemented support of DryRun for Serenity Rest (@YamStranger)

    • ebe88bd feat: serenity rest core decomposed to make possible use shaned method invocations for configuring default parameters. (@YamStranger)

    • f5eb645 test: serenity-rest implemented test to check if failed query recorded and it is possible to use assertions (@YamStranger)

    Source code(tar.gz)
    Source code(zip)
  • v1.1.30(Apr 20, 2016)

    Commits:

    • 08c4823 test: serenity-rest tested to configure base path and pase uri and other base configurations (@YamStranger)

    • 146b1d8 feat: serenity-rest implemented wrapping of request after redirects configuration (@YamStranger)

    • 231052b feat: implemented wrapping after operations with body, content, headers, contentTypes (@YamStranger)

      Now serenity-rest will work correctly with opertions like:

      given().contentType(ContentType.XML).get(url)
      given().contentType(ContentType.XML).get(url)
      given().headers(map).get(url)
      given().header(CONTENT_TYPE.asString(), ContentType.JSON).get(url)
      given().contentType(&quot;application/json&quot;).content(body).post(url)
      
    • 30105b4 test: created tests to check if HEAD operatin works correctly and return empty body (@YamStranger)

    • 432e5f6 feat: implemented wrapping during executing on request instance operations like when, with, given, and (@YamStranger)

    • 443ca49 test: serenity-rest, added tests for checking https requests and auth params configurations (@YamStranger)

    • 4cb9449 feat: implemented wrapping of request/response after HTTPS and Auth configurations (@YamStranger)

      Now, rest assured will use wrapped request and response after configurations like below:

      given().relaxedHTTPSValidation().get(url)
      when().authentication().basic(&quot;login&quot;,&quot;password&quot;).get(url)
      given().authentication().none()
      given().auth().oauth2(token)
      given().authentication().basic(&quot;user&quot;, &quot;password&quot;)
      
    • 5b6b67f feat: wrapped put request, updated wrapping of get request - to use only one function-endpoint (@YamStranger)

    • 5cc45f3 feat: in serenity-rest implemented setting base path, base uri, session id, port, urlEncodingEnabled (@YamStranger)

      To set base paramters next code can be used:

      given().basePath(path).get(url)
      given().baseUri(base).port(port).get(path)
      given().baseUri(base).port(port).get(path)
      given().baseUri(base).basePath(&quot;/test&quot;).get(&quot;log/levels&quot;)
      
    • 63d9538 test: added tests to check wrapping response and request and correctness of setting body, content, headers (@YamStranger)

    • 6ed97f3 style: changed request organisation, added tests for get operation (@YamStranger)

    • 794f5af test: serenity-rest, added tests for checking wrapping after redirects configuration (@YamStranger)

    • 7a014ec feat: implemented HEAD, PATCH, DELETE, OPTIONS, POST operations and wrapping of results (@YamStranger)

    • 7f439d2 test: serenity-rest added tests for using chains of given, and, when, with based on request instance (@YamStranger)

    • 81c6d30 feat: impelemented processing and wrapping of result for operations with pathParameter, queryParams, param, params, parameters, formParam (@YamStranger)

    • af19533 feat: implemented processing log operation with rest assurance, and created tests for it (@YamStranger)

    • ca059a5 test: added tests to check wrapping repsponse after PUT, POST, PATCH, DELETE, OPTIONS, HEAD requests (@YamStranger)

    • f1e2cde test: added tests for PUT operations (@YamStranger)

    Source code(tar.gz)
    Source code(zip)
  • v1.1.29-rc.3(Apr 5, 2016)

  • v1.1.29-rc.2(Mar 28, 2016)

    Pull requests:

    • #367 Updated making screenshots for browsers without such abbility (@YamStranger)
    • #366 Updated making screenshort with died browser - nothing should be taken (@YamStranger)
    • #360 Fixed closing web driver when appium is used, it seems that window handles still does not implemented for Android devices, only for iOS (@YamStranger)
    • #354 fix: Issues with SerenityParameterized test requiring WebDriver (@jordanbragg)
    • #349 Updated scenario data driven steps processing for report - now report will contains steps as for first scenario (@YamStranger)
    • #348 Updated name of test method for Qualifier tests (@YamStranger)
    • #347 Updated processing of @Qualifier tag in junit tests with data tables. Now it is possible add short description to steps based on parameters value (@YamStranger)
    • #344 Created gradle build config for smoketests to execute them against latest serenty core (@YamStranger)
    • #339 Updated tests for rest-assurance to use wiremock server instead of petstore. Added TestCase rule - now it is possible initialize test using spock (@YamStranger)
    • #330 Updated store/load of outcomes - serenity.report.encoding property will be used with UTF-8 as default (@cliviu)

    Commits:

    • 240b93b feat: added checking if browser alive before taking screenshot or saving page-source (@YamStranger)
    • 4d2029c test: updated tests for rest-assurance to use wiremock server instead of petstore (@YamStranger)
    • 6417437 fix: updated scenario data driven steps processing for report - now report will contains steps as from first scenario (@YamStranger)
    • 6aefe69 test: refactored test for Qualifier (@YamStranger)
    • 71102ac fix: updated processing of @Qualifier tag in junit tests with data tables. Now it is possible add short description to steps based on parameters value (@YamStranger)
    • 89e9512 test: added tests to check how taking screenshorts works with died browsers (@YamStranger)
    • a4d6b32 fix: When using SerenityParameterizedRunner tests there was a need to add [@Managed WebDriver in order to see the examples table. This is due to TestClassRunnerForInstanciatedTestCase not overriding initListener](https://github.com/Managed WebDriver in order to see the examples table. This is due to TestClassRunnerForInstanciatedTestCase not overriding initListener)s
    • a505bd9 fix: updated closing web driver when appium is used, it seems that window handles still does not implemented for Android devices, only for iOS (@YamStranger)
    • bf6d91e chore: created gradle build config for smoketests to execute them against latest serenty core (@YamStranger)
    • e6e6651 test: updated name of test method (@YamStranger)
    Source code(tar.gz)
    Source code(zip)
  • v1.1.29-rc.1(Mar 3, 2016)

    Pull requests:

    • #335 Updated moving files. Now tmp files of reports will be moved only after stream will be closed (@YamStranger)
    • #333 Updated appium java client to 3.3.0 (@YamStranger)
    • #332 Updated processing of names to keep abbreviations of JSON CSV XML (@YamStranger)
    • #331 Updated appium configuration to be compatible with Appium 1.5 - appium.app is no longer required if appium.browserName is supplied (@hazmeister)

    Commits:

    Source code(tar.gz)
    Source code(zip)
  • v1.1.28(Mar 2, 2016)

    Pull requests:

    • #295 Updated test to check how darkroom works in parallel screenshot taking (@YamStranger)
    • #328 Included exception/assertion message into serenity report (@YamStranger)

    Commits:

    Source code(tar.gz)
    Source code(zip)
  • v1.1.27(Mar 1, 2016)

    Pull requests:

    • #326 Updated report generation to use temp files. (@YamStranger)
    • #324 Updated method to print exception if it will appear (@YamStranger)
    • #323 Updated loader and reporter to load and generate testoutcomes concurrently with tests, updated gson core to 2.4 (@YamStranger)
    • #319 Updated jbehave to 4.0.5 (@YamStranger)
    • #317 Updated checking of empty string to use StringUtils, for #310 (@YamStranger)
    • #316 Updated contiributing guide - explaned multiline commits and pull requests name convention (@YamStranger)
    • #311 Change log generated for all releases (@YamStranger)
    • #313 Fixed Test Failure stacktrace, now it can contain elements with no fileName (default.ftl), for #312 (@marek5050)

    Commits:

    Source code(tar.gz)
    Source code(zip)
  • v1.1.26(Feb 18, 2016)

  • v1.1.26-rc.3(Feb 18, 2016)

    Commits:

    • 433b732 Allow more elegant waits in the Screenplay module (@wakaleo)

      You can now write code like this: jane.should(eventually(seeThat(TheClickerValue.of(clicker), equalTo(10)))) This will not fail if the matcher cannot be evaluated the first time, but will retry up to a maximum of 'serenity.timouts' seconds (5 by default).

    • e0c2263 Corrected an error in the module names (@wakaleo)

    Source code(tar.gz)
    Source code(zip)
  • v1.1.26-rc.2(Feb 18, 2016)

    Pull requests:

    Commits:

    • 0340f82 fix: updating logging for serenity gradle plugin (@YamStranger)

    • 0e08c8c Use the correct name for the screenplay library for this version (@wakaleo)

    • 412657b fix: updating gradle plugin to work with new configuration (@YamStranger)

    • 4f1581c fix: updating getSessionId method to get session id without init new webdriver (@YamStranger)

    • 6f4f5d4 fix: updating logging for serenity gradle plugin, using simple out stream (@YamStranger)

    • 720c516 chore: added gitattributes (@YamStranger)

    • 909f21a Renamed serenity-journey to serenity-screenplay (@wakaleo)

      Also allow conditional tasks of the following form: dana.attemptsTo( Check.whether(cost>100) .andIfSo(purchaseAPear) .otherwise(purchaseAnApple) ); Or with a Question<Boolean>: dana.attemptsTo( Check.whether(itIsTooExpensive) .andIfSo(purchaseAPear) .otherwise(purchaseAnApple) );

    • 91c3238 fix: updating version of serenityc-core and maven-plugin (@YamStranger)

    • 9d5fb9e style: updating test style (@YamStranger)

    • bf8fca3 fix: remote driver session id can be under proxied driver (@YamStranger)

    • cbc92cb fix: updated gradle plugin to work with multimodule projects (@YamStranger)

    • d9c1e6a style: updated name of test method (@YamStranger)

    • ffdc3ef fix: updating requirements directory to be able work with multimodule projects (@YamStranger)

    Source code(tar.gz)
    Source code(zip)
  • v1.1.26-rc.1(Feb 18, 2016)

    Pull requests:

    Commits:

    • 3e0d991 Actors can now perform tasks conditionally (@wakaleo)

      Use the Unless class static methods and a bolean expression, e.g.

      Unless.the(items.isEmpty(), AddTodoItems.called(items)) 
      

      or use a question of type Question<Boolean>:

      Unless.the(itemsListisEmpty(), AddTodoItems.called(items)) 
      
    • 862b790 Updated smoke tests (@wakaleo)

    • b98f19f chore: updated gitattributes (@YamStranger)

    • c6122c8 fix: fixed nullpointer if json config does not exists (@YamStranger)

    • c9572c8 Actors can now perform tasks conditionally (@wakaleo)

    • e71056d fix: updated gitattributes (@YamStranger)

    Source code(tar.gz)
    Source code(zip)
Owner
Serenity BDD
An automated acceptance tests reporting library (previously known as Thucydides)
Serenity BDD
Um projeto simples usando Serenity BDD desenvolvido para testes backend.

?? EM CONSTRUÇÂO ?? Um pouco sobre Serenity e o projeto desenvolvido Serenity_BDD é uma biblioteca de código aberto que visa tornar a ideia de documen

null 10 Aug 30, 2022
Framework for Mobile test automation using Appium with Java - BDD

appium-mobile-automation-framework-bdd Mobile automation framework using appium - BDD ?? Quick Start - Appium set up on Windows (Android): Install Jav

Thangaraj 18 Oct 19, 2022
FitNesse -- The Acceptance Test Wiki

FitNesse Welcome to FitNesse, the fully integrated stand-alone acceptance testing framework and wiki. To get started, check out http://fitnesse.org! Q

Robert C. Martin 1.9k Jan 3, 2023
Library that allows tests written in Java to follow the BDD style introduced by RSpec and Jasmine.

J8Spec J8Spec is a library that allows tests written in Java to follow the BDD style introduced by RSpec and Jasmine. More details here: j8spec.github

J8Spec 45 Feb 17, 2022
BDD framework for automation using Selenium Cucumber and TestNg

Selenium Framework with Cucumber BDD framework for automation using Selenium Cucumber and TestNg The framework has following features Modular Design M

null 3 Jan 20, 2022
A BDD-style test runner for Java 8. Inspired by Jasmine, RSpec, and Cucumber.

Spectrum A colorful BDD-style test runner for Java Spectrum is inspired by the behavior-driven testing frameworks Jasmine and RSpec, bringing their ex

Greg Haskins 143 Nov 22, 2022
A sample repo to help you capture JavaScript exception for automation test in Java-TestNG on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to capture JavaScript exception for automation test in Java-TestNG on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Ma

null 11 Jul 13, 2022
A sample repo to help you use relative locators for automation test in Java-TestNG on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to use relative locators for automation test in Java-TestNG on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Maven wit

null 11 Jul 13, 2022
A sample repo to help you use CDP console in Java-TestNG automation test on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to use CDP console in Java-TestNG automation test on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Maven with Homebrew

null 11 Jul 13, 2022
A sample repo to help you set geolocation for automation test in Java-TestNG on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to set geolocation for automation test in Java-TestNG on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Maven with Home

null 12 Jul 13, 2022
A sample repo to help you emulate network control using CDP in Java-TestNG automation test on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to emulate network control using CDP in Java-TestNG automation test on LambdaTest Environment Setup Global Dependencies Install Maven Or Install M

null 12 Oct 23, 2022
A sample repo to help you handle basic auth for automation test in Java-TestNG on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to handle basic auth for automation test in Java-TestNG on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Maven with Ho

null 11 Jul 13, 2022
A sample repo to help you set device mode using CDP in Java-TestNG automation test on LambdaTest. Run Selenium tests with TestNG on LambdaTest platform.

How to set device mode using CDP in Java-TestNG automation test on LambdaTest Environment Setup Global Dependencies Install Maven Or Install Maven wit

null 11 Jul 13, 2022
A sample repo to help you handle basic auth for automation test in Java-selenium on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to handle basic auth for automation test in Java-selenium on LambdaTest Prerequisites Install and set environment variable for java. Windows - htt

null 12 Jul 13, 2022
A sample repo to help you run automation test in incognito mode in Java-selenium on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to run automation test in incognito mode in Java-selenium on LambdaTest Prerequisites Install and set environment variable for java. Windows - htt

null 12 Jul 13, 2022
A sample repo to help you handle cookies for automation test in Java-selenium on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to handle cookies for automation test in Java-selenium on LambdaTest Prerequisites Install and set environment variable for java. Windows - https:

null 13 Jul 13, 2022
A sample repo to help you set geolocation for automation test in Java-selenium on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to set geolocation for automation test in Java-selenium on LambdaTest Prerequisites Install and set environment variable for java. Windows - https

null 12 Jul 13, 2022
A sample repo to help you capture JavaScript exception for automation test in Java-selenium on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to capture JavaScript exception for automation test in Java-selenium on LambdaTest Prerequisites Install and set environment variable for java. Wi

null 12 Jul 13, 2022
A sample repo to help you find an element by text for automation test in Java-selenium on LambdaTest. Run your Java Selenium tests on LambdaTest platform.

How to find an element by text for automation test in Java-selenium on LambdaTest Prerequisites Install and set environment variable for java. Windows

null 12 Jul 13, 2022