Careeroza
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=chromeExample 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
| Concern | Handled by | Tester writes |
|---|---|---|
| Browser start and quit | BaseTest + DriverFactory | nothing |
| SIT / UAT URLs and users | ConfigReader + -Denv=uat | nothing |
| Screenshot on failure | TestListener | nothing |
| Retry on infra blips | RetryTransformer | nothing |
| Business steps | page objects | one method per new screen |
| Checks | TestNG assertions | the assertion |