2 Replies Latest reply on Dec 7, 2017 6:30 PM by mschink

    @WarpTest causes @ArquillianResource NullPointerException

    mschink

      Hi there! First time using Arquillian, and it's been a blast. I'm hoping to get started with Warp from a very basic Drone/Graphene webapp running JSF on a Tomcat 8.5 Embedded container. I'm using Weld to enable CDI. Because I'm trying to keep the webapp and the test code separate, I'm relying on ShrinkWrap to import the webapp WAR file and classes. My setup for the webapp is very basic simple - the problem is when I start to use Warp and @ArquillianResources.

       

      Here is the LoginTest class with the @WarpTest annotation which causes the error. Note: removing the ONE line 25. @WarpTest resolves the problem immediately. But I need it to be a @WarpTest so I may do some server-side assertions.

       

      
      import java.io.File;
      import java.net.URL;
      import org.jboss.arquillian.container.test.api.Deployment;
      import org.jboss.arquillian.container.test.api.RunAsClient;
      import org.jboss.arquillian.junit.Arquillian;
      import org.jboss.shrinkwrap.api.ShrinkWrap;
      import org.jboss.shrinkwrap.api.spec.WebArchive;
      import org.junit.runner.RunWith;
      import org.jboss.arquillian.drone.api.annotation.Drone;
      import static org.jboss.arquillian.graphene.Graphene.guardAjax;
      import static org.jboss.arquillian.graphene.Graphene.guardHttp;
      import org.jboss.arquillian.graphene.findby.FindByJQuery;
      import org.jboss.arquillian.test.api.ArquillianResource;
      import org.jboss.arquillian.warp.WarpTest;
      import org.jboss.shrinkwrap.api.importer.ZipImporter;
      import static org.junit.Assert.assertEquals;
      import static org.junit.Assert.assertTrue;
      import org.junit.Test;
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.WebElement;
      import org.openqa.selenium.support.FindBy;
      
      
      @RunWith(Arquillian.class)
      @WarpTest
      @RunAsClient
      public class LoginTest {
      
      
          @Deployment
          public static WebArchive createDeployment() {
              WebArchive webArchive = ShrinkWrap.create(ZipImporter.class, "WebAppToImport.war").importFrom(new File("target/WebAppToImport.war"))
                      .as(WebArchive.class);
              System.out.println(webArchive.toString(true));
              return webArchive;
          }
      
      
          @Drone
          private WebDriver browser;
      
      
          @ArquillianResource
          private URL deploymentURL;
      
      
          @FindBy(id = "userName")
          private WebElement userName;
      
      
          @FindBy(id = "password")
          private WebElement password;
      
      
          @FindBy(id = "login")
          private WebElement loginButton;
      
      
          @FindBy(tagName = "li")                     // 2. injects a first element with given tag name
          private WebElement facesMessage;
      
      
          @FindByJQuery("p:visible")                  // 3. injects an element using jQuery selector
          private WebElement signedAs;
      
      
          @FindBy(css = "input[type=submit]")
          private WebElement whoAmI;
      
      
          @Test
          public void login_is_succesful() {
              browser.get(deploymentURL.toExternalForm() + "login.xhtml");
      
      
              userName.sendKeys("demo");
              password.sendKeys("demo");
      
      
              guardHttp(loginButton).click();
              assertEquals("Welcome", facesMessage.getText().trim());
              
              guardAjax(whoAmI).click();
              assertTrue(signedAs.getText().contains("demo"));
          }
      }
      

       

      Here is my pom.xml with some groupId's redacted

       

          <groupId>...</groupId>
          <artifactId>WebAppToImportTesting</artifactId>
          <version>1.0-SNAPSHOT</version>
          <packaging>jar</packaging>
          
          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <maven.compiler.source>1.8</maven.compiler.source>
              <maven.compiler.target>1.8</maven.compiler.target>
          </properties>
          
          <dependencyManagement>
              <dependencies>
                  <!-- This keeps Arquillian Drone versioning consistent -->
                  <dependency>
                      <groupId>org.jboss.arquillian.extension</groupId>
                      <artifactId>arquillian-drone-bom</artifactId>
                      <version>2.0.1.Final</version>
                      <scope>import</scope>
                      <type>pom</type>                
                  </dependency>
                  <!-- This keeps Arquillian versioning consistent -->
                  <dependency>
                      <groupId>org.jboss.arquillian</groupId>
                      <artifactId>arquillian-bom</artifactId>
                      <version>1.1.14.Final</version>
                      <scope>import</scope>
                      <type>pom</type>
                  </dependency>
              </dependencies>
          </dependencyManagement>
      
      
          <dependencies>
              <!-- JUnit -->
              <dependency>
                  <groupId>junit</groupId>
                  <artifactId>junit</artifactId>
                  <version>4.12</version>
                  <scope>test</scope>
              </dependency>
              <!-- Arquillian JUnit Container -->
              <dependency>
                  <groupId>org.jboss.arquillian.junit</groupId>
                  <artifactId>arquillian-junit-container</artifactId>
                  <scope>test</scope>
              </dependency>
              <!-- Arquillian Graphene contains Drone as well -->
              <dependency>
                  <groupId>org.jboss.arquillian.graphene</groupId>
                  <artifactId>graphene-webdriver</artifactId>
                  <version>2.1.0.Final</version>
                  <type>pom</type>
                  <scope>test</scope>
              </dependency>
              <!-- Arquillian Warp -->
              <dependency>
                  <groupId>org.jboss.arquillian.extension</groupId>
                  <artifactId>arquillian-warp-jsf</artifactId>
                  <version>1.0.0.Alpha8</version>
              </dependency>
              <!-- WebAppToImport Classes -->
              <dependency>
                  <groupId>...</groupId>
                  <artifactId>WebAppToImport</artifactId>
                  <version>1.0-SNAPSHOT</version>
                  <classifier>classes</classifier>
                  <scope>test</scope>
              </dependency>
          </dependencies>
          
          <profiles>
              <profile>
                  <id>tomcat-remote</id>
                  <activation>
                      <activeByDefault>true</activeByDefault>
                  </activation>
                  <dependencies>
                      <!-- JavaEE spec -->
                      <dependency>
                          <groupId>org.jboss.spec</groupId>
                          <artifactId>jboss-javaee-7.0</artifactId>
                          <version>1.0.3.Final</version>
                          <type>pom</type>
                          <scope>provided</scope>
                      </dependency>
                      <!-- Weld Container -->
                      <dependency>
                          <groupId>org.jboss.arquillian.container</groupId>
                          <artifactId>arquillian-weld-ee-embedded-1.1</artifactId>
                          <version>1.0.0.CR9</version>
                          <scope>test</scope>
                      </dependency>
                      <!-- CDI -->
                      <dependency>
                          <groupId>org.jboss.weld</groupId>
                          <artifactId>weld-core</artifactId>
                          <version>2.3.5.Final</version>
                          <scope>test</scope>
                      </dependency>
                      <!-- Logging -->
                      <dependency>
                          <groupId>org.slf4j</groupId>
                          <artifactId>slf4j-simple</artifactId>
                          <version>1.6.4</version>
                          <scope>test</scope>
                      </dependency>
                  </dependencies>
              </profile>
              <profile>
                  <id>arquillian-tomcat-embedded</id>
                  <dependencies>
                      <!-- Faces API -->
                      <dependency>
                          <groupId>javax.faces</groupId>
                          <artifactId>javax.faces-api</artifactId>
                          <version>2.2</version>
                          <scope>provided</scope>
                      </dependency>
                      <!-- Mojarra Impl of Faces API -->
                      <dependency>
                          <groupId>org.glassfish</groupId>
                          <artifactId>javax.faces</artifactId>
                          <version>2.2.15</version>
                          <scope>runtime</scope>
                      </dependency>
                      <!-- The above seems to be missing the EL implementation -->
                      <dependency>
                          <groupId>org.glassfish.web</groupId>
                          <artifactId>el-impl</artifactId>
                          <version>2.2</version>
                          <scope>runtime</scope>
                      </dependency>
                      <!-- EE compile-time reference -->
                      <dependency>
                          <groupId>javax</groupId>
                          <artifactId>javaee-web-api</artifactId>
                          <version>8.0</version>
                          <scope>provided</scope>
                      </dependency>
                      <!-- CDI compile-time reference -->
                      <dependency>
                          <groupId>javax.enterprise</groupId>
                          <artifactId>cdi-api</artifactId>
                          <version>1.2</version>
                          <scope>provided</scope>
                      </dependency>
                      <!-- Arquillian Container -->
                      <dependency>
                          <groupId>org.jboss.arquillian.container</groupId>
                          <artifactId>arquillian-tomcat-embedded-8</artifactId>
                          <version>1.0.0.CR10</version>
                          <scope>test</scope>
                      </dependency>
                      <!-- Tomcat Embedded -->
                      <dependency>
                          <groupId>org.apache.tomcat.embed</groupId>
                          <artifactId>tomcat-embed-core</artifactId>
                          <version>8.5.16</version>
                          <scope>provided</scope>
                      </dependency>
                      <dependency>
                          <groupId>org.apache.tomcat.embed</groupId>
                          <artifactId>tomcat-embed-jasper</artifactId>
                          <version>8.5.16</version>
                          <scope>provided</scope>
                      </dependency>
                      <dependency>
                          <groupId>org.apache.tomcat.embed</groupId>
                          <artifactId>tomcat-embed-logging-juli</artifactId>
                          <version>8.5.2</version>
                          <scope>provided</scope>
                      </dependency>
                      <dependency>
                          <groupId>org.eclipse.jdt.core.compiler</groupId>
                          <artifactId>ecj</artifactId>
                          <version>3.7</version>
                          <scope>test</scope>
                      </dependency>
                      <!-- Weld servlet for testing CDI injections -->
                      <dependency>
                          <groupId>org.jboss.weld.servlet</groupId>
                          <artifactId>weld-servlet</artifactId>
                          <version>2.3.5.Final</version>
                          <scope>test</scope>
                      </dependency>
                  </dependencies>
              </profile>
          </profiles>    
          
          <build>
              <plugins>
                  <plugin>
                      <artifactId>maven-compiler-plugin</artifactId>
                      <version>2.3.2</version>
                  </plugin>
                  <plugin>
                      <artifactId>maven-surefire-plugin</artifactId>
                      <version>2.17</version>
                  </plugin>
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-dependency-plugin</artifactId>
                      <version>3.0.2</version>
                      <executions>
                          <execution>
                              <id>copy-compiled</id>
                              <phase>compile</phase>
                              <goals>
                                  <goal>copy</goal>
                              </goals>
                              <configuration>
                                  <artifactItems>
                                      <artifactItem>
                                          <!-- WebAppToImport WAR -->
                                          <groupId>...</groupId>
                                          <artifactId>WebAppToImport</artifactId>
                                          <version>1.0-SNAPSHOT</version>
                                          <type>war</type>
                                          <destFileName>WebAppToImport.war</destFileName>
                                      </artifactItem>
                                  </artifactItems>
                                  <outputDirectory>${project.build.directory}</outputDirectory>
                                  <overWriteReleases>false</overWriteReleases>
                                  <overWriteSnapshots>true</overWriteSnapshots>
                              </configuration>
                          </execution>
                      </executions>
                  </plugin>
              </plugins>
          </build>
       </project>
          </build>
      
      

       

      And finally the full stack trace of the error I'm getting.

       

      java.lang.NullPointerException: null
      at org.jboss.arquillian.warp.impl.client.proxy.ProxyUsageTracker.registerOperationalContextToUrl(ProxyUsageTracker.java:75)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:86)
      at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:103)
      at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:90)
      at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:133)
      at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:105)
      at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:62)
      at org.jboss.arquillian.warp.impl.client.proxy.ProxyURLProvider.getProxyUrl(ProxyURLProvider.java:96)
      at org.jboss.arquillian.warp.impl.client.proxy.ProxyURLProvider.lookup(ProxyURLProvider.java:85)
      at org.jboss.arquillian.graphene.location.ContextRootStoreInitializer.getContextRoot(ContextRootStoreInitializer.java:54)
      at org.jboss.arquillian.graphene.location.ContextRootStoreInitializer.setupLocationForClass(ContextRootStoreInitializer.java:47)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:86)
      at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:103)
      at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:90)
      at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:133)
      at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:105)
      at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:62)
      at org.jboss.arquillian.junit.RulesEnricher.enrichInstances(RulesEnricher.java:83)
      at org.jboss.arquillian.junit.RulesEnricher.enrichStatement(RulesEnricher.java:77)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:86)
      at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:103)
      at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:90)
      at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createContext(ContainerEventController.java:128)
      at org.jboss.arquillian.container.test.impl.client.ContainerEventController.createBeforeContext(ContainerEventController.java:114)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:86)
      at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:95)
      at org.jboss.arquillian.test.impl.TestContextHandler.createTestContext(TestContextHandler.java:116)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:86)
      at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:95)
      at org.jboss.arquillian.test.impl.TestContextHandler.createClassContext(TestContextHandler.java:83)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:86)
      at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:95)
      at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:69)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:86)
      at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:95)
      at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:133)
      at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:105)
      at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.fireCustomLifecycle(EventTestRunnerAdaptor.java:142)
      at org.jboss.arquillian.junit.Arquillian$7.evaluate(Arquillian.java:281)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
      at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:174)
      at org.jboss.arquillian.junit.Arquillian.multiExecute(Arquillian.java:376)
      at org.jboss.arquillian.junit.Arquillian.access$200(Arquillian.java:54)
      at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:185)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
      at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:140)
      at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)
      at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
      at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
      at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
      at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
      at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
      

       

      Thanks so much in advance for reading the post - I hope I was clear. I suspect I am running into some issues with Maven dependencies not lining up?

       

      Cheers,

      Morgan

        • 1. Re: @WarpTest causes @ArquillianResource NullPointerException
          mschink

          Update:

           

          Here's the code snippet from ProxyUsageTracker that causes the NPE.

           

              public void registerOperationalContextToUrl(@Observes RequireProxy event) {
                  if (!contextMapping.get().isRegistered(event.getProxyUrl())) {
                      OperationalContext context = contexts.get().test();
                      contextMapping.get().register(event.getProxyUrl(), testClass.get().getJavaClass(), context);
                  }
          
          
                  if (!realUrlMapping.get().isRegistered(event.getRealUrl())) {
                      realUrlMapping.get().register(event.getRealUrl(), event.getProxyUrl());
                  }
              }
          

           

          Line 8 is the problem - now, the weird thing is that if I debug my test I can see that realUrlMapping is valid, so is event, and isRegistered immediately throws a NullPointerException when I can't see any issue.

           

          Anyone with more experience than I willing to help? Thanks

          • 2. Re: @WarpTest causes @ArquillianResource NullPointerException
            mschink

            Hey guys,

             

            Last update. It looks like something might be going on with Tomcat Embedded. I was able to workaround the problem by using Tomcat Managed. Here's my new pom.xml and arquillian.xml in case anyone has similar troubles getting this setup.

             

            pom.xml

            <?xml version="1.0" encoding="UTF-8"?>
            <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>redacted</groupId>
                <artifactId>redactedTesting</artifactId>
                <version>1.0-SNAPSHOT</version>
                <packaging>jar</packaging>
                
                <properties>
                    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                    <maven.compiler.source>1.8</maven.compiler.source>
                    <maven.compiler.target>1.8</maven.compiler.target>
                </properties>
                
                <dependencyManagement>
                    <dependencies>
                        <dependency>
                            <groupId>org.jboss.arquillian</groupId>
                            <artifactId>arquillian-bom</artifactId>
                            <version>1.1.11.Final</version>
                            <type>pom</type>
                            <scope>import</scope>
                        </dependency>
                        <dependency>
                            <groupId>org.jboss.arquillian.extension</groupId>
                            <artifactId>arquillian-drone-bom</artifactId>
                            <version>2.0.1.Final</version>
                            <type>pom</type>
                            <scope>import</scope>
                        </dependency>
                        <dependency>
                            <groupId>org.jboss.arquillian.extension</groupId>
                            <artifactId>arquillian-warp-bom</artifactId>
                            <version>1.0.0.Alpha8</version>
                            <type>pom</type>
                            <scope>import</scope>
                        </dependency>
                    </dependencies>
                </dependencyManagement>
            
            
                <dependencies>
                    <dependency>
                        <groupId>org.jboss.arquillian.junit</groupId>
                        <artifactId>arquillian-junit-container</artifactId>
                        <scope>test</scope>
                    </dependency>
                    <dependency>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                        <scope>test</scope>
                        <version>4.11</version>
                    </dependency>
                    <dependency>
                        <groupId>org.jboss.arquillian.graphene</groupId>
                        <artifactId>graphene-webdriver</artifactId>
                        <version>2.1.0.Final</version>
                        <type>pom</type>
                        <scope>test</scope>
                    </dependency>
                    <dependency>
                        <groupId>org.jboss.arquillian.container</groupId>
                        <artifactId>arquillian-tomcat-managed-8</artifactId>
                        <version>1.0.0</version>
                        <scope>test</scope>
                    </dependency>
                    <dependency>
                        <groupId>org.jboss.arquillian.extension</groupId>
                        <artifactId>arquillian-warp-jsf</artifactId>
                        <scope>test</scope>
                    </dependency>            
                    <dependency>
                        <groupId>redacted</groupId>
                        <artifactId>redacted</artifactId>
                        <version>2.0-SNAPSHOT</version>
                        <classifier>classes</classifier>
                        <scope>test</scope>
                    </dependency>
                </dependencies>
                
                <build>
                    <plugins>
                        <plugin>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <version>3.1</version>
                            <configuration>
                                <source>1.8</source>
                                <target>1.8</target>
                            </configuration>
                        </plugin>
                        <plugin>
                            <artifactId>maven-surefire-plugin</artifactId>
                            <version>2.17</version>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-dependency-plugin</artifactId>
                            <version>3.0.2</version>
                            <executions>
                                <execution>
                                    <id>copy-compiled</id>
                                    <phase>compile</phase>
                                    <goals>
                                        <goal>copy</goal>
                                    </goals>
                                    <configuration>
                                        <artifactItems>
                                            <artifactItem>
                                                <!-- redacted WAR -->
                                                <groupId>redacted</groupId>
                                                <artifactId>redacted</artifactId>
                                                <version>2.0-SNAPSHOT</version>
                                                <type>war</type>
                                                <destFileName>webapp</destFileName>
                                            </artifactItem>
                                        </artifactItems>
                                        <outputDirectory>${project.build.directory}</outputDirectory>
                                        <overWriteReleases>false</overWriteReleases>
                                        <overWriteSnapshots>true</overWriteSnapshots>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </build>
                
                <repositories>
                    <repository>
                        <id>maven-redacted-network</id>
                        <name>redacted Maven Network Repository</name>
                        <url>redacted</url>
                    </repository>
                </repositories>
                
                <name>redactedTesting</name>
            </project>
            

             

            arquillian.xml

            <?xml version="1.0" encoding="UTF-8"?>
            <!--
            
            
                JBoss, Home of Professional Open Source
                Copyright 2012, Red Hat Middleware LLC, and individual contributors
                by the @authors tag. See the copyright.txt in the distribution for a
                full listing of individual contributors.
            
            
                Licensed under the Apache License, Version 2.0 (the "License");
                you may not use this file except in compliance with the License.
                You may obtain a copy of the License at
                http://www.apache.org/licenses/LICENSE-2.0
                Unless required by applicable law or agreed to in writing, software
                distributed under the License is distributed on an "AS IS" BASIS,
                WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                See the License for the specific language governing permissions and
                limitations under the License.
            
            
            -->
            <arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://jboss.org/schema/arquillian"
                        xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
            
            
                <defaultProtocol type="Servlet 3.0"/>
                
                <extension qualifier="webdriver">
                    <property name="browser">firefox</property>
                </extension>
            
            
                <container qualifier="tomcat" default="true">
                    <configuration>
                        <property name="catalinaHome">D:\apache-tomcat-8.5.16</property>
                        <property name="catalinaBase">D:\apache-tomcat-8.5.16</property>
                        <property name="jmxPort">8089</property>
                        <property name="bindHttpPort">8080</property>
                        <property name="serverConfig">server.xml</property>
                        <property name="javaVmArguments">
                            -Xmx1024m -XX:MaxPermSize=512m
                            -Dcom.sun.management.jmxremote.port=8089 -Dcom.sun.management.jmxremote.ssl=false
                            -Dcom.sun.management.jmxremote.authenticate=false
                        </property>
                        <property name="user">arquillian</property>
                        <property name="pass">arquillian</property>
                    </configuration>
                </container>
            </arquillian>
            

             

            Cheers,

            Morgan