Real World Example

A Service-Company Banking Framework

At service companies (TCS, Infosys, Cognizant) testing a bank's net-banking portal, one hybrid framework is shared by 20–40 testers. A new tester adds a test by writing one page method and one test method; driver setup, config per environment (SIT, UAT), screenshots, logs and retries come from the framework.

@Listeners({TestListener.class, RetryTransformer.class})
public class FundTransferTest extends BaseTest {
    private static final Logger log = LogManager.getLogger(FundTransferTest.class);

    @Test(groups = {"regression", "payments"}, dataProvider = "transfers", dataProviderClass = TestData.class)
    public void neftTransferShowsReference(String fromAcc, String payee, String amount) {
        log.info("NEFT {} -> {} amount {}", fromAcc, payee, amount);
        String ref = new LoginPage(driver).open()
                .loginAs(ConfigReader.get("custId"), ConfigReader.get("custPassword"))
                .goToTransfers()
                .neft(fromAcc, payee, amount)
                .confirmWithOtp(ConfigReader.get("staticOtp"))   // UAT uses a fixed OTP
                .referenceNumber();
        Assert.assertTrue(ref.matches("N\\d{10}"), "Bad reference: " + ref);
    }
}

Example

mvn test -Denv=uat -Dgroups=payments -Dbrowser=chrome

Example output

[INFO] Running TestSuite
11:05:12.441 INFO  [TestNG-methods-1] FundTransferTest - NEFT 50100234 -> RAHUL-HDFC amount 2500
11:05:12.452 INFO  [TestNG-methods-2] FundTransferTest - NEFT 50100234 -> PRIYA-SBI amount 10000
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 48.91 s
[INFO] BUILD SUCCESS

What the Framework Gives Each Test

ConcernHandled byTester writes
Browser start and quitBaseTest + DriverFactorynothing
SIT / UAT URLs and usersConfigReader + -Denv=uatnothing
Screenshot on failureTestListenernothing
Retry on infra blipsRetryTransformernothing
Business stepspage objectsone method per new screen
ChecksTestNG assertionsthe assertion