You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

You can clone an existing JUnit Selenium test as a parameterized test. Literal values passed to the WebDriver sendKeys method will be parameterized in the newly created parameterized test. This feature is currently only supported for JUnit 5.

Enabling the Clone Action

The action that enables Selenic to make a clone of test and add the parameterization is enabled via system property.

Eclipse

Add the following system property to your eclipse.ini file after the -vmargs entry and restart Eclipse: 

-Dcom.parasoft.selenic.ui.testgen.enableCloneAction=true 

IntelliJ

  1. Choose Help > Edit Custom VM Options from the IntelliJ menu.
  2. Add the following property to the idea.vmoptions editor:
    -Dcom.parasoft.selenic.ui.testgen.enableCloneAction=true 
  3. Save your changes and restart IntelliJ.

Usage

Right-click on a test and choose Clone as Parameterized

Literal values passed to the WebDriver sendKeys method will be parameterized in the newly created parameterized test. The following types of values are supported:

  • Inline literal values
  • static constant
  • enum value
  • local variable with literal value passed to test method

Example

The following test has two string values at lines 14 and 15:

/**
	 * Name: parabank-check-account
	 * Recording file: parabank-check-account.json
	 *
	 * Parasoft recorded Selenium test on Tue Jun 23 2020 15:11:20 GMT-0700 (Pacific Daylight Time)
	 */
	@Test
	public void testParabankcheckaccount() throws Throwable {
		driver.get(System.getProperty("PARABANK_BASE_URL", PARABANK_BASE_URL)
				+ "/parabank/index.htm;jsessionid=02E418F8743E5AD30034D686C5B298FC");

		ParaBankWelcomeOnlineBankingPage paraBankWelcomeOnlineBankingPage = new ParaBankWelcomeOnlineBankingPage(
				driver);
		paraBankWelcomeOnlineBankingPage.setUsernameField("john");
		paraBankWelcomeOnlineBankingPage.setPasswordField("demo");
		paraBankWelcomeOnlineBankingPage.clickLogInButton();

The cloned parameterized test passes the values as parameters text={0} and text={1}:

	/**
	 * Parasoft Selenic: Test cloned from
	 * com.parabank.test.checkAccountTest#testParabankcheckaccount()
	 *
	 * @see com.parabank.test.checkAccountTest#testParabankcheckaccount()
	 * @author atrujillo
	 */
	@ParameterizedTest
	@MethodSource("testParabankcheckaccount2_Parameters")
	public void testParabankcheckaccount2(String text, String text2) throws Throwable {
		driver.get(System.getProperty("PARABANK_BASE_URL", PARABANK_BASE_URL)
				+ "/parabank/index.htm;jsessionid=02E418F8743E5AD30034D686C5B298FC");

		ParaBankWelcomeOnlineBankingPage paraBankWelcomeOnlineBankingPage = new ParaBankWelcomeOnlineBankingPage(
				driver);
		paraBankWelcomeOnlineBankingPage.setUsernameField(text);
		paraBankWelcomeOnlineBankingPage.setPasswordField(text2);
		paraBankWelcomeOnlineBankingPage.clickLogInButton();

		ParaBankAccountsOverviewPage paraBankAccountsOverviewPage = new ParaBankAccountsOverviewPage(driver);
		paraBankAccountsOverviewPage.clickAccountsOverviewLink();
		paraBankAccountsOverviewPage.clickLink();

		ParaBankAccountActivityPage paraBankAccountActivityPage = new ParaBankAccountActivityPage(driver);
		paraBankAccountActivityPage.selectMonthDropdown("January");
		paraBankAccountActivityPage.selectTransactionTypeDropdown("Credit");
		paraBankAccountActivityPage.clickGoButton();
	}

	// Parasoft Selenic: Initialize test parameters
	@SuppressWarnings("unused")
	private static Stream<Arguments> testParabankcheckaccount2_Parameters() throws Throwable {
		// Parameters: text={0}, text2={1}
		return Stream.of(arguments("john", "demo"));
	}
  • No labels