Overview
Hi In ItestContexts.setAttribute() the method Page Object does not get overridden by the new pages created , I want to dynamically update the the page value in ItestContext on run time
Question
I'm using Playwright with Java to develop a wrapper framework and I have created a custom listener class implementing ITestListener to take screenshot on failure using playwright methods, I only use one Page object in my test class which I overrides with new pages as wanted , but the ItestContext page reference does not get overridden by the latest page value I have set in my test method , how can I achieve ItestContext.setAttribute to update the latest page value on run time, as per my Test Method line 3
@BeforeClass
public void init(ITestContext iTestContext) {
iTestContext.setAttribute("Page_Reference", page); //page comes from my inherited BaseClass
}
@Test(description = "Testing Screenshot by Overriding Practice")
public void navDishLandPage() {
page.goTo("https://github.com/"); //page reference comes from my base class - 1
Page originalPage = page; //stores page reference to later access - 2
page = getPage("User"); //Overrides the previous page reference by new Page ; getPage("Key") is a wrapper method -3
page.goTo("https://github.com/cbeust/testng/issues/2905");
page = originalPage; //switching back to the stored page reference
System.out.println(page.getTitle());
Assert.assertEquals(page.getTitle(), "TTT");
}
Inside My onTestFailureMethod
Page page = (Page) iTestResult.getTestContext().getAttribute("Page_Reference");
byte[] bufferImage=page.screenShot();