Would like to inquire on how to properly override or replace the value of a declared parameter in the Test Suite XML file.
POM.xml:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<systemProperties>
<property>
<name>mode.debug</name>
<value>false</value>
</property>
<property>
<name>browser</name>
<value>chrome</value>
</property>
</systemProperties>
</configuration>
</plugin>
</plugins>
POM.xml inside the Project 1:
<plugin>
<groupId>org.testng</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-testng</artifactId>
<version>3.0.0-M5</version>
</dependency>
</dependencies>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
The Test Suite is located in "src\main\java\plans\Test\TestSuite.xml"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite">
<parameter name="browsername" value="chrome" />
<parameter name="headless" value="false" />
<parameter name="reportBase64toThumbnail" value="false" />
<parameter name="logCharPerLine" value="110" />
<parameter name="reportImageQuality" value="med" />
<parameter name="implicitlyWaitTime" value="1" />
<parameter name="pageLoadTimeout" value="300" />
<parameter name="switchUser" value="false" />
<parameter name="displayXPath" value="false" />
<parameter name="OverrideApp" value="APP NAME" />
<parameter name="USER_NAME" value="USER 1" />
<parameter name="baseurl" value="https://test.com..." />
<parameter name="envname" value="TEST_ENV" />
<test name="TEST_NAME">
<classes>
<class name="modules.test.scripts.SAMPLE_SCRIPT" />
</classes>
</test>
</suite>
Current steps to run:
mvn --projects commons,project1 --also-make clean install -U -DskipTests
cd project1
mvn clean test -fae -Dsurefire.suiteXmlFiles="src\main\java\plans\Test\TestSuite.xml"
In our currentin-house tool if we execute the same Test Suite XML on a different environment, we just provide override name and value.
baseurl = https://test2.com
envname= TEST2_ENV
While exploring Maven and TestNG, I already tried adding -Dbaseurl="https://test2.com" in the command line but the baseurl wasn't replaced or overriden.
Would like to seek further advise for this kind of approach. :)
Update: After checking the maven's debug logs, the baseurl is replaced in "Setting system property" and not in Test Suite's Parameter value.