简体   繁体   中英

Selenium tests running twice using Serenity

I'm running some tests using Maven clean/verify. My reporting is in Serenity. However my tests appear to run twice before the build is successful Serenity only shows one test (which is good) can someone check over the code and see what's causing it because I've tried a few things like taking out post-integration-tests etc yet it still runs the same test twice.

POM File

    `<project xmlns="http://maven.apache.org/POM/4.0.0"` xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>website.SurveyManager</groupId>
  <artifactId>GeneralTests</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>GeneralTests</name>
  <description>General Tests for Survey Manager</description>

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit.version>4.12</junit.version>

  </properties>


    <dependencies>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
        </dependency>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.47.1</version>
        </dependency>


<dependency>
    <groupId>net.serenity-bdd</groupId>
    <artifactId>serenity-core</artifactId>
    <version>1.1.12</version>
</dependency>


        <dependency>
            <groupId>net.serenity-bdd</groupId>     
            <artifactId>serenity-junit</artifactId>
            <version>1.1.12</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.18.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                <includes>
                    <include>**/*Test.java</include>
                    <include>**/*When*.java</include>
                </includes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>net.serenity-bdd.maven.plugins</groupId>       
                <artifactId>serenity-maven-plugin</artifactId>
                <version>1.1.12</version>

                <executions>
                    <execution>
                        <id>serenity-reports</id>
                        <phase>post-integration-test</phase>             
                        <goals>
                            <goal>aggregate</goal>                       
                        </goals>
                    </execution>

                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
          <configuration>
                <fork>true</fork>
                <executable>C:\Program Files\Java\jdk1.8.0_60\bin\javac.exe</executable>  

          </configuration>
        </plugin>
        </plugins>
    </build>

</project>

Test FIle:

    package website.SurveyManager.test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.WebDriver;

import website.SurveyManager.test.steps.SurveyManagerSteps;
import net.serenitybdd.junit.runners.SerenityRunner;
import net.thucydides.core.annotations.Managed;
import net.thucydides.core.annotations.Steps;

@RunWith (SerenityRunner.class)
public class SurveyManagerTest {

    @Managed
    WebDriver driver;

    @Steps
    SurveyManagerSteps steps;

    @Test
    public void testSurveyManagerVersion(){
        steps.gotoSurveyManager();
        steps.checkVersion();
        steps.VersionValidation("1.0.0.9");


    }

}

Steps FIle:

package website.SurveyManager.test.steps;

import org.openqa.selenium.By;

import net.thucydides.core.annotations.Step;
import net.thucydides.core.steps.ScenarioSteps;
import static org.junit.Assert.*;

public class SurveyManagerSteps extends ScenarioSteps {

    @Step
    public void gotoSurveyManager(){
        getDriver().get("http://website.surveymanager.sys.networks.local/Survey/List");
    }

    @Step ()
    public void checkVersion(){
        getDriver().findElement(By.className("popupLink")).click();

    }

    @Step ()
    public void VersionValidation(String s){
        String actualValue = getDriver().findElement(By.xpath(".//*[@id='aboutSM']/div[1]/div[2]/table/tbody/tr[2]/td[2]")).getText();
        assertEquals(s, actualValue);

    }
}

my runner class looks like: In your case try to remove @manage annotation with Webdriver driver as it's not necessary in your case

package com.epam;

import cucumber.api.CucumberOptions;
import net.serenitybdd.cucumber.CucumberWithSerenity;
import net.thucydides.core.annotations.Feature;
import org.junit.runner.RunWith;

import static com.epam.utils.Property.*;

@RunWith(CucumberWithSerenity.class)
@CucumberOptions(
    features = {HMC,GALLERIES,ORDERS},
    tags = {"~@ignore"},
    strict = true
)
public class DefinitionTestSuite {

}

For opening page you just need to extend your pageobject with PageObject.class method called open() and set up in your page @DefaultUrl annotation, just like here (in my case I used CustomPageObject, coz I need to open my browser in maximize mode every time):

package com.epam.pages.frontendpages.cart;

import com.epam.utils.PageObjectCustom;
import com.epam.webElementFacadeCustomImpl.ICustomWebFacadeElement;
import net.serenitybdd.core.annotations.findby.FindBy;
import net.thucydides.core.annotations.DefaultUrl;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.interactions.Actions;

import static com.epam.utils.Property.SERV;

@DefaultUrl(SERV+"/cart")
public abstract class BaseCartPage extends PageObjectCustom {

    @FindBy(id = "voucherInput0")private ICustomWebFacadeElement voucherField;
    @FindBy(xpath = "//h2[@id='voucher_link']//span[@class='draw_header_text']")private ICustomWebFacadeElement voucherBlockLink;
    @FindBy(xpath = "//*[contains(@class,'applyVoucher_container')]/input")private ICustomWebFacadeElement applyVoucherBtn;
    @FindBy(xpath = "//div[@class='col']//a[contains(@class,'checkout-btn')]")protected ICustomWebFacadeElement proceedToTheNextPage;

    public void applyVoucherCode(String voucherCode){
        if(!voucherField.isCurrentlyVisible()){
            new Actions(getDriver()).moveToElement(voucherBlockLink).click().build().perform();
        }
        voucherField.sendKeys(voucherCode);
        applyVoucherBtn.click();
    }
}

So now you can write in Steps just

new BaseCartPage.open()

Also please note that you will have to crate classes:

YourPage extends PageObject
YourPageSteps extends ScenarioSteps
YourPageStepsDefinition 

last one should have @Given and so on cucumber annotations

Edit:

Here's the Run success

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Running website.SurveyManager.test.SurveyManagerTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 15.772 sec - in website.SurveyManager.test.SurveyManagerTest

Results :

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent! The file encoding for reports output files should be provided by the POM property ${project.reporting.outputEncoding}.
[INFO] 
[INFO] --- serenity-maven-plugin:1.1.12:aggregate (serenity-reports) @ GeneralTests ---
Merging requirements = []
Merging requirements = []
Merged requirements set = []
[INFO] REPORTS GENERATED IN C:\Users\pkirby\workspace\GeneralTests\target\site\serenity
[INFO] REPORT HOME PAGE: C:\Users\pkirby\workspace\GeneralTests\target\site\serenity\index.html
[INFO] Generating release reports for: []
GENERATE CUSTOM REPORTS
[INFO] 
[INFO] --- maven-failsafe-plugin:2.18.1:verify (default) @ GeneralTests ---
[INFO] Failsafe report directory: C:\Users\pkirby\workspace\GeneralTests\target\failsafe-reports
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent! The file encoding for reports output files should be provided by the POM property ${project.reporting.outputEncoding}.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 42.716 s
[INFO] Finished at: 2015-09-18T13:22:25+01:00
[INFO] Final Memory: 31M/282M
[INFO] ------------------------------------------------------------------------

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM