Here is my code:
package Flows;
import java.io.IOException;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.PageFactoryFinder;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.SkipException;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import org.testng.asserts.Assertion;
import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.Status;
import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
import com.google.common.eventbus.AllowConcurrentEvents;
import POMs.cinemaslocators;
import POMs.conditionsofAccess;
import POMs.fnbmainpage;
import POMs.loyaltyLogin;
import POMs.loyaltylLoginCred;
import POMs.nowShowing;
import POMs.paymentPage;
import POMs.purchaseconfirmation;
import POMs.seatLayout;
import POMs.showtimeslocators;
import POMs.successfullBooking;
import Support.BaseClass;
import Support.BaseClass2;
import Support.ExcelUtils;
import dev.failsafe.internal.util.Assert;
import net.bytebuddy.build.Plugin.Factory.UsingReflection.Priority;
public class GuestTicketBooking extends BaseClass2{
public static WebDriverWait wait;
public static ExtentReports reports;
public static ExtentTest test;
public static ExtentHtmlReporter reporter;
public static String message;
public static String Id;
public static JavascriptExecutor js;
public static XSSFWorkbook workbook;
public static XSSFSheet sheet;
// BaseClass bc;
@BeforeTest
public void startbrowser() throws InterruptedException, IOException {
reports = new ExtentReports();
reporter = new ExtentHtmlReporter("extentreport.html");
reports.attachReporter(reporter);
test = reports.createTest("start browser", "This is the test to validate the browser started or not");
// bc = new BaseClass();
// bc.initiateDriver();
// driver = new ChromeDriver();
//
// driver.manage().window().maximize();
test.log(Status.INFO, "starting the test case");
// driver.get("https://amcwebv2.influx.co.in/");
BaseClass2.browsersetup();
test.pass("browser has been opened successfully");
}
@Test(priority = 1)
public void amc_home_page() throws InterruptedException {
PageFactory.initElements(driver, seatlayoutprovoder.class);
PageFactory.initElements(driver, BaseClass2.class);
wait = new WebDriverWait(driver, Duration.ofSeconds(20));
test = reports.createTest("Website Home Page Test", "This is the test to validate the website home page");
test.log(Status.INFO, "starting the test case");
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@class='amc-btn-default amc-btn'][1]")));
PageFactory.initElements(driver, loyaltylLoginCred.class);
test.pass("website home page loaded successfully");
}
@Test(priority = 2)
public void langselection() throws InterruptedException {
test = reports.createTest("Language selection test", "This is the Test to validate the language selection");
test.log(Status.INFO, "starting the test case");
PageFactory.initElements(driver,loyaltylLoginCred.class);
loyaltylLoginCred.languageEng.click();
test.pass("language has been selected successfully");
Thread.sleep(10000);
}
@Test(priority = 3)
public void NowShowingMovieselection() throws InterruptedException {
Thread.sleep(5000);
wait = new WebDriverWait(driver, Duration.ofSeconds(20));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@class='join-now']")));
js = (JavascriptExecutor)driver;
js.executeScript("window.scrollBy(0, 150)", "");
PageFactory.initElements(driver, nowShowing.class);
test = reports.createTest("now showing test", "This is the test to validate the now showing movie to select");
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//a[@class='amc-btn-primary amc-btn'])[14]")));
test.log(Status.INFO, "starting the test case");
nowShowing.getTicket.click();
test.pass("Now Showing movie was selected");
}
@Test(priority = 4)
public void session_selection() throws InterruptedException {
PageFactory.initElements(driver, showtimeslocators.class);
js.executeScript("window.scrollBy(0, 150)", "");
test = reports.createTest("session selection test", "This is the test to validate the session selection");
test.log(Status.INFO, "starting the test case");
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//span[@class='amc-time '])[1]")));
showtimeslocators.samplesession.click();
test.pass("session selected successfully");
Thread.sleep(3000);
}
@Test(priority = 5)
public void condition_of_access_agree() throws InterruptedException {
test = reports.createTest("Conditions of Access Test", "This is the test to validate the conditions of access agreeing");
PageFactory.initElements(driver, conditionsofAccess.class);
PageFactory.initElements(driver, loyaltylLoginCred.class);
test.log(Status.INFO, "starting the test case");
loyaltylLoginCred.ContinueasGuest.click();
test.pass("continue as guest has been selected successfully");
Thread.sleep(5000);
conditionsofAccess.agree_button.click();
Thread.sleep(4000);
test.pass("agree button has been clicked sucessfully");
}
private boolean iselementpre(String by) {
// TODO Auto-generated method stub
try {
driver.findElement(By.xpath(""+by+""));
return true;
} catch (Exception e) {
System.out.println(e);
return false;
}
}
@Test(priority = 6)
public boolean seatclick() throws InterruptedException {
test = reports.createTest("Seat Layout Test", "This is the test to validate the Seat Layout");
Thread.sleep(5000);
test.log(Status.INFO, "Test Started");
String element[] = {"A1", "A2", "A3", "A4", "A4", "A5", "A6", "A7"};
for (int i = 0; i<7; i++) {
boolean iselementpre = iselementpre("//li[@class = 'seat avail']/child::a[@title = '"+element[i]+"']");
if(iselementpre == true) {
Thread.sleep(4000);
try {
WebElement seat = driver.findElement(By.xpath("//li[@class = 'seat avail']/child::a[@title = '"+element[i]+"']"));
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", seat);
}catch(Exception e) {
System.out.println(e);
}
test.pass("seat layout has been selected");
Thread.sleep(4000);
System.out.println("seat clicked"+element[i]+iselementpre);
}
}
return false;
}
// @Test(priority = 6)
// public void seat_selection() throws InterruptedException {
// try {
// PageFactory.initElements(driver, seatLayout.class);
// js.executeScript("window.scrollBy(0, 100)", "");
// Thread.sleep(2000);
// test = reports.createTest("Seat Layout Test", "This is the test to validate the seatlayout");
// test.log(Status.INFO, "Starting the test case");
//
// String element[] = {"A1", "A2", "A3", "A4", "A4", "A5", "A6", "A7"};
// for(String seatnumber : element) {
// WebElement seat = driver.findElement(By.xpath("//a[@title='"+seatnumber+"']"));
//
// wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@title='"+seatnumber+"']")));
// seat.click();
// }
// }catch (InterruptedException e) {
// e.printStackTrace();
// e.getCause();
// e.getMessage();
// }
// finally {
// seat_selection();
// }
// }
//
// @Test(priority = 6, dataProvider = "seatlayout", dataProviderClass = seatlayoutprovoder.class)
// public void seat_layout_selection(String Seatnumber) throws InterruptedException {
// PageFactory.initElements(driver, seatLayout.class);
// js.executeScript("window.scrollBy(0, 50)", "");
// Thread.sleep(2000);
// test = reports.createTest("Seat Layout Test", "This is the test to validate the seatlayout");
// test.log(Status.INFO, "Starting the test case");
// WebElement seat = driver.findElement(By.xpath("//a[@title='"+Seatnumber+"']"));
// seat.click();
// if(seat.isDisplayed()&& seat.isEnabled()) {
//
// test.pass("seat has been selected");
// }else {
// test.pass("selecting another seat");
// seat_layout_selection(Seatnumber);
//
// }
// Thread.sleep(2000);
// seatLayout.continue_button_at_seatlayout.click();
// test.pass("seat layout completed successfully");
// Thread.sleep(5000);
// }
@Test(priority = 7)
public void fnb() throws InterruptedException {
PageFactory.initElements(driver, fnbmainpage.class);
test = reports.createTest("FNB Page Test", "This is the test to vaidate the FNB page");
test.log(Status.INFO, "starting the test case");
fnbmainpage.continue_button_at_fnb.click();
test.pass("FNB page completed successfully");
Thread.sleep(5000);
}
@Test(priority = 8)
public void confirm_purchase_guestuser_details() throws InterruptedException {
PageFactory.initElements(driver, purchaseconfirmation.class);
test = reports.createTest("Guest User details Test", "This is the test to validate the guest user details");
test.log(Status.INFO, "starting the test case");
purchaseconfirmation.first_name.sendKeys("Test");
purchaseconfirmation.last_name.sendKeys("QA");
purchaseconfirmation.mobile_number.sendKeys("9791075150");
Thread.sleep(2000);
js.executeScript("window.scrollBy(0, 100)", "");
purchaseconfirmation.email_id.sendKeys("fayaznoorjahan94@gmail.com");
purchaseconfirmation.guest_details_confirm_continue.click();
test.pass("guest user details are entered successfully");
}
@Test(priority = 9)
public void confirm_purchase_card_details() throws InterruptedException {
test = reports.createTest("card details test", "This is the test to validate the card details in the confirm purchase page");
test.log(Status.INFO, "starting the test case");
PageFactory.initElements(driver, purchaseconfirmation.class);
Thread.sleep(3000);
js.executeScript("window.scrollBy(0, 200)", "");
Thread.sleep(2000);
purchaseconfirmation.cardradiobutton.click();
Thread.sleep(4000);
js.executeScript("window.scrollBy(0, 300)", "");
Thread.sleep(3000);
purchaseconfirmation.card_number.sendKeys("4111111111111111");
purchaseconfirmation.card_expiry.sendKeys("0929");
purchaseconfirmation.card_holder.sendKeys("Test Card");
purchaseconfirmation.cvv.sendKeys("123");
js.executeScript("window.scrollBy(0,150)", "");
Thread.sleep(2000);
purchaseconfirmation.pay_now_button.click();
test.pass("card details are enteres successfully");
Thread.sleep(5000);
}
@Test(priority = 10)
public void external_payment_page() throws InterruptedException {
test = reports.createTest("external payment page test", "This is the test to validate the external payment page");
test.log(Status.INFO, "starting the test case");
PageFactory.initElements(driver, paymentPage.class);
paymentPage.Pay_button.click();
Thread.sleep(8000);
test.pass("external page has been completed successfully");
}
@Test(priority = 11)
public void successfull_booking() throws InterruptedException {
PageFactory.initElements(driver, successfullBooking.class);
message = successfullBooking.booking_message.getText();
js.executeScript("window.scrollBy(0, 250)", "");
Thread.sleep(2000);
Id = successfullBooking.booking_ID.getText();
org.testng.Assert.assertEquals(message, "Your ticket booking was successful!");
test.pass("booking done successfully");
Thread.sleep(3000);
}
@AfterTest
public void teardown() {
reports.flush();
driver.close();
}
}
until priority number 5 it's executing correctly, but after priority number 5 the script is failed and it's stopped to run, the console is doesn't have that particular test
totally I'm running 11 tests but in the console it's showing as 10 tests
since I'm new to selenium please help me with the solution
The reason why the 'seatclick' method (test #6) doesn't run is likely because of the test method signature.
By default (following the best practices) TestNG test methods shouldn't return anything, i.e. they should have return type - void.
If you really need to return something by the test method, you need to add the 'allow-return-values' (search for 'allow-return-values') property to your suite XML.
Without this property, your test will be skipped, and the next test (7th) will fail because it most likely depends on the previous one (6th).