Merge branch '102-autotesting' into 'dev'
Resolve "Классы для автотестов" Closes #102 See merge request romanov73/ng-tracker!58
This commit is contained in:
commit
4eef57bce7
@ -22,7 +22,7 @@ checkRun:
|
|||||||
|
|
||||||
checkStyle:
|
checkStyle:
|
||||||
stage: test
|
stage: test
|
||||||
script: ./gradlew check
|
script: ./gradlew check -x test
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
|
@ -114,9 +114,6 @@ dependencies {
|
|||||||
compile group: 'org.liquibase', name: 'liquibase-core', version: '3.5.3'
|
compile group: 'org.liquibase', name: 'liquibase-core', version: '3.5.3'
|
||||||
compile group: 'com.mattbertolini', name: 'liquibase-slf4j', version: '2.0.0'
|
compile group: 'com.mattbertolini', name: 'liquibase-slf4j', version: '2.0.0'
|
||||||
|
|
||||||
compile group: 'org.apache.poi', name: 'poi', version: '3.9'
|
|
||||||
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.9'
|
|
||||||
|
|
||||||
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7'
|
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.7'
|
||||||
|
|
||||||
compile group: 'org.webjars', name: 'bootstrap', version: '4.1.0'
|
compile group: 'org.webjars', name: 'bootstrap', version: '4.1.0'
|
||||||
@ -125,8 +122,10 @@ dependencies {
|
|||||||
compile group: 'org.webjars.npm', name: 'jquery.easing', version: '1.4.1'
|
compile group: 'org.webjars.npm', name: 'jquery.easing', version: '1.4.1'
|
||||||
compile group: 'org.webjars', name: 'font-awesome', version: '4.7.0'
|
compile group: 'org.webjars', name: 'font-awesome', version: '4.7.0'
|
||||||
|
|
||||||
compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.5.0'
|
compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.6.0'
|
||||||
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.5.0'
|
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.6.0'
|
||||||
|
|
||||||
testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test'
|
testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test'
|
||||||
|
testCompile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.3.1'
|
||||||
|
|
||||||
}
|
}
|
@ -1,7 +0,0 @@
|
|||||||
package ru.ulstu.core.error;
|
|
||||||
|
|
||||||
public class XlsLoadException extends Exception {
|
|
||||||
public XlsLoadException(String s) {
|
|
||||||
super(s);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
package ru.ulstu.core.error;
|
|
||||||
|
|
||||||
public class XlsParseException extends Exception {
|
|
||||||
public XlsParseException(String s) {
|
|
||||||
super(s);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
package ru.ulstu.core.service;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.ulstu.core.model.TreeDto;
|
|
||||||
import ru.ulstu.core.model.TreeEntity;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.function.Predicate;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
public class TreeService<T extends TreeEntity> {
|
|
||||||
public TreeDto getTree(String rootName, List<T> rootItems) {
|
|
||||||
return addChildNode(new TreeDto(rootName), rootItems, element -> true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public TreeDto getTree(String rootName, List<T> rootItems, Predicate<T> filterPredicate) {
|
|
||||||
return addChildNode(new TreeDto(rootName), rootItems, filterPredicate);
|
|
||||||
}
|
|
||||||
|
|
||||||
private TreeDto addChildNode(TreeDto currentRoot, List<T> children, Predicate<T> filterPredicate) {
|
|
||||||
if (children != null) {
|
|
||||||
children.stream()
|
|
||||||
.filter(filterPredicate)
|
|
||||||
.forEach(item -> {
|
|
||||||
TreeDto newNode = new TreeDto(item);
|
|
||||||
currentRoot.getChildren().add(addChildNode(newNode, item.getChildren(), filterPredicate));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return currentRoot;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,207 +0,0 @@
|
|||||||
package ru.ulstu.core.service;
|
|
||||||
|
|
||||||
import org.apache.poi.POIXMLDocument;
|
|
||||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
||||||
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
|
||||||
import org.apache.poi.ss.usermodel.*;
|
|
||||||
import org.apache.poi.ss.util.CellRangeAddress;
|
|
||||||
import org.apache.poi.ss.util.RegionUtil;
|
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
||||||
import ru.ulstu.core.error.XlsParseException;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
public class XlsDocumentBuilder {
|
|
||||||
private static final int DEFAULT_SHEET_NUM = 0;
|
|
||||||
private File documentFile;
|
|
||||||
private Workbook workBook;
|
|
||||||
private Sheet currentSheet;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor for reading and writing data from/to *.[xls|xlsx] document
|
|
||||||
*
|
|
||||||
* @param file contains existing document for reading or new document to save
|
|
||||||
*/
|
|
||||||
public XlsDocumentBuilder(File file) throws IOException, XlsParseException {
|
|
||||||
this.documentFile = file;
|
|
||||||
if (file.exists()) {
|
|
||||||
workBook = getWorkBook(file);
|
|
||||||
currentSheet = workBook.getSheetAt(DEFAULT_SHEET_NUM);
|
|
||||||
} else {
|
|
||||||
workBook = new XSSFWorkbook();
|
|
||||||
currentSheet = workBook.createSheet();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Workbook getWorkBook(File file) throws XlsParseException, IOException {
|
|
||||||
InputStream inputStream = new PushbackInputStream(new FileInputStream(file), 4096);
|
|
||||||
if (isXlsx(inputStream)) {
|
|
||||||
return new XSSFWorkbook(inputStream);
|
|
||||||
} else if (isExcel(inputStream)) {
|
|
||||||
return new HSSFWorkbook(inputStream);
|
|
||||||
}
|
|
||||||
throw new XlsParseException("Wrong document format");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Change active sheet to write or read data
|
|
||||||
*
|
|
||||||
* @param index index of sheet to activate
|
|
||||||
*/
|
|
||||||
public XlsDocumentBuilder setActiveSheet(int index) {
|
|
||||||
workBook.setActiveSheet(index);
|
|
||||||
currentSheet = workBook.getSheetAt(index);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create new sheet in document and set it active
|
|
||||||
*
|
|
||||||
* @param sheetName
|
|
||||||
*/
|
|
||||||
public XlsDocumentBuilder insertNewSheet(String sheetName) {
|
|
||||||
currentSheet = workBook.createSheet(sheetName);
|
|
||||||
workBook.setActiveSheet(getSheetCount() - 1);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public XlsDocumentBuilder insertNewSheet(String sheetName, int order) {
|
|
||||||
insertNewSheet(sheetName);
|
|
||||||
workBook.setSheetOrder(sheetName, order);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns number of sheet in document
|
|
||||||
*
|
|
||||||
* @return sheets count
|
|
||||||
*/
|
|
||||||
public int getSheetCount() {
|
|
||||||
return workBook.getNumberOfSheets();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns number of rows in sheet
|
|
||||||
*
|
|
||||||
* @return rows count
|
|
||||||
*/
|
|
||||||
public int getRowCount() {
|
|
||||||
return currentSheet.getLastRowNum();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns number of columns in sheet
|
|
||||||
*
|
|
||||||
* @return columns count
|
|
||||||
*/
|
|
||||||
public int getColumnCount() {
|
|
||||||
Row row = currentSheet.getRow(getRowCount());
|
|
||||||
if (row == null) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return row.getLastCellNum() - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns converted to string representation of cell value
|
|
||||||
*
|
|
||||||
* @param rowIndex row index of current sheet
|
|
||||||
* @param colIndex column index of current sheet
|
|
||||||
* @return string value of cell
|
|
||||||
*/
|
|
||||||
public String getCellAsString(int rowIndex, int colIndex) {
|
|
||||||
Cell cell = currentSheet.getRow(rowIndex).getCell(colIndex);
|
|
||||||
cell.setCellType(Cell.CELL_TYPE_STRING);
|
|
||||||
return cell.getStringCellValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets string cell value
|
|
||||||
*
|
|
||||||
* @param rowIndex row index of current sheet
|
|
||||||
* @param colIndex column index of current sheet
|
|
||||||
*/
|
|
||||||
public XlsDocumentBuilder setCellValue(int rowIndex, int colIndex, String value) {
|
|
||||||
if (currentSheet.getRow(rowIndex) == null) {
|
|
||||||
currentSheet.createRow(rowIndex);
|
|
||||||
}
|
|
||||||
if (currentSheet.getRow(rowIndex).getCell(colIndex) == null) {
|
|
||||||
currentSheet.getRow(rowIndex).createCell(colIndex);
|
|
||||||
}
|
|
||||||
Cell cell = currentSheet.getRow(rowIndex).getCell(colIndex);
|
|
||||||
cell.setCellValue(value);
|
|
||||||
setColumnAutosize(colIndex, colIndex);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public XlsDocumentBuilder setCellValue(int rowIndex, int colIndex, int value) {
|
|
||||||
return setCellValue(rowIndex, colIndex, String.valueOf(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
public XlsDocumentBuilder setCellValue(int rowIndex, int colIndex, long value) {
|
|
||||||
return setCellValue(rowIndex, colIndex, String.valueOf(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Save current file
|
|
||||||
*/
|
|
||||||
public XlsDocumentBuilder save() throws IOException {
|
|
||||||
OutputStream out = new FileOutputStream(documentFile);
|
|
||||||
workBook.write(out);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isExcel(InputStream i) throws IOException {
|
|
||||||
return (POIFSFileSystem.hasPOIFSHeader(i) || POIXMLDocument.hasOOXMLHeader(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isXlsx(InputStream i) throws IOException {
|
|
||||||
return POIXMLDocument.hasOOXMLHeader(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getActiveSheetIndex() {
|
|
||||||
return workBook.getActiveSheetIndex();
|
|
||||||
}
|
|
||||||
|
|
||||||
public XlsDocumentBuilder mergeCells(int rowFrom, int rowTo, int colFrom, int colTo) {
|
|
||||||
currentSheet.addMergedRegion(new CellRangeAddress(rowFrom, rowTo, colFrom, colTo));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRegionBorderWithMedium(int rowFrom, int rowTo, int colFrom, int colTo) {
|
|
||||||
for (int row = rowFrom; row < rowTo; row++) {
|
|
||||||
for (int col = colFrom; col <= colTo; col++) {
|
|
||||||
CellRangeAddress cellRangeAddress = new CellRangeAddress(row, row, col, col);
|
|
||||||
RegionUtil.setBorderBottom(CellStyle.BORDER_THIN, cellRangeAddress, currentSheet, workBook);
|
|
||||||
RegionUtil.setBorderLeft(CellStyle.BORDER_THIN, cellRangeAddress, currentSheet, workBook);
|
|
||||||
RegionUtil.setBorderRight(CellStyle.BORDER_THIN, cellRangeAddress, currentSheet, workBook);
|
|
||||||
RegionUtil.setBorderTop(CellStyle.BORDER_THIN, cellRangeAddress, currentSheet, workBook);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public XlsDocumentBuilder setColumnAutosize(int from, int to) {
|
|
||||||
for (int col = from; col <= to; col++) {
|
|
||||||
currentSheet.autoSizeColumn(col, true);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public XlsDocumentBuilder setRowAutosize(int from, int to) {
|
|
||||||
CellStyle style = workBook.createCellStyle();
|
|
||||||
style.setWrapText(true);
|
|
||||||
for (int row = from; row <= to; row++) {
|
|
||||||
for (int col = 0; col <= currentSheet.getRow(row).getLastCellNum(); col++) {
|
|
||||||
if (currentSheet.getRow(row).getCell(col) != null) {
|
|
||||||
currentSheet.getRow(row).getCell(col).setCellStyle(style);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public XlsDocumentBuilder deleteSheet(int index) {
|
|
||||||
workBook.removeSheetAt(index);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
BIN
src/main/resources/drivers/chromedriver
Normal file
BIN
src/main/resources/drivers/chromedriver
Normal file
Binary file not shown.
BIN
src/main/resources/drivers/chromedriver.exe
Normal file
BIN
src/main/resources/drivers/chromedriver.exe
Normal file
Binary file not shown.
BIN
src/main/resources/drivers/geckodriver
Normal file
BIN
src/main/resources/drivers/geckodriver
Normal file
Binary file not shown.
BIN
src/main/resources/drivers/geckodriver.exe
Normal file
BIN
src/main/resources/drivers/geckodriver.exe
Normal file
Binary file not shown.
52
src/test/java/IndexPageTest.java
Normal file
52
src/test/java/IndexPageTest.java
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import core.PageObject;
|
||||||
|
import core.TestTemplate;
|
||||||
|
import org.assertj.core.api.Assertions;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
import paper.PaperPage;
|
||||||
|
import paper.PapersDashboardPage;
|
||||||
|
import paper.PapersPage;
|
||||||
|
import ru.ulstu.NgTrackerApplication;
|
||||||
|
import ru.ulstu.configuration.ApplicationProperties;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest(classes = NgTrackerApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
|
||||||
|
public class IndexPageTest extends TestTemplate {
|
||||||
|
private final Map<PageObject, List<String>> navigationHolder = ImmutableMap.of(
|
||||||
|
new PapersPage(), Arrays.asList("СТАТЬИ", "/papers/papers"),
|
||||||
|
new PaperPage(), Arrays.asList("РЕДАКТИРОВАНИЕ СТАТЬИ", "/papers/paper?id=0"),
|
||||||
|
new PapersDashboardPage(), Arrays.asList("СТАТЬИ", "/papers/dashboard")
|
||||||
|
);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ApplicationProperties applicationProperties;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testStartApplication() {
|
||||||
|
getContext().goTo(applicationProperties.getBaseUrl());
|
||||||
|
Assertions
|
||||||
|
.assertThat(getContext().getTitle())
|
||||||
|
.isEqualTo("NG-Tracker");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testModulesNavigation() {
|
||||||
|
navigationHolder.entrySet()
|
||||||
|
.stream()
|
||||||
|
.forEach(navigationEntry -> {
|
||||||
|
getContext().goTo(applicationProperties.getBaseUrl() + navigationEntry.getValue().get(1));
|
||||||
|
PageObject pageObject = getContext().initPage(navigationEntry.getKey());
|
||||||
|
Assertions
|
||||||
|
.assertThat(pageObject.getSubTitle())
|
||||||
|
.isEqualToIgnoringCase(navigationEntry.getValue().get(0));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
27
src/test/java/context/ChromeContext.java
Normal file
27
src/test/java/context/ChromeContext.java
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package context;
|
||||||
|
|
||||||
|
import org.openqa.selenium.chrome.ChromeDriver;
|
||||||
|
import org.openqa.selenium.chrome.ChromeOptions;
|
||||||
|
|
||||||
|
public class ChromeContext extends Context {
|
||||||
|
private final static String WINDOWS_DRIVER = "chromedriver.exe";
|
||||||
|
private final static String LINUX_DRIVER = "chromedriver";
|
||||||
|
private final static String DRIVER_TYPE = "webdriver.chrome.driver";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void createDriver() {
|
||||||
|
final ChromeOptions chromeOptions = new ChromeOptions();
|
||||||
|
chromeOptions.addArguments("--headless");
|
||||||
|
driver = new ChromeDriver(chromeOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getDriverExecutable(boolean isWindows) {
|
||||||
|
return isWindows ? WINDOWS_DRIVER : LINUX_DRIVER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getDriverType() {
|
||||||
|
return DRIVER_TYPE;
|
||||||
|
}
|
||||||
|
}
|
67
src/test/java/context/Context.java
Normal file
67
src/test/java/context/Context.java
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
package context;
|
||||||
|
|
||||||
|
import core.PageObject;
|
||||||
|
import org.openqa.selenium.Dimension;
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
//import org.openqa.selenium.support.PageFactory;
|
||||||
|
|
||||||
|
public abstract class Context {
|
||||||
|
private final static String DRIVER_LOCATION = "drivers/%s";
|
||||||
|
|
||||||
|
protected WebDriver driver;
|
||||||
|
|
||||||
|
protected WebDriver getDriver() {
|
||||||
|
if (driver != null) {
|
||||||
|
return driver;
|
||||||
|
}
|
||||||
|
throw new IllegalStateException("WebDriver is not initialized");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void start() {
|
||||||
|
System.setProperty(getDriverType(), getDriverExecutablePath());
|
||||||
|
|
||||||
|
createDriver();
|
||||||
|
// это плохая инструкция для автотестов, т.к. лучше задавать для конкретного элемента или кейса
|
||||||
|
getDriver().manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void close() {
|
||||||
|
if (driver != null) {
|
||||||
|
driver.quit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void goTo(String url) {
|
||||||
|
getDriver().get(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle() {
|
||||||
|
return getDriver().getTitle();
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T extends PageObject> T initPage(T pageObject) {
|
||||||
|
return (T) pageObject.setDriver(getDriver());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void createDriver();
|
||||||
|
|
||||||
|
protected abstract String getDriverType();
|
||||||
|
|
||||||
|
protected abstract String getDriverExecutable(boolean windows);
|
||||||
|
|
||||||
|
private String getDriverExecutablePath() {
|
||||||
|
return Context.class.getClassLoader().getResource(
|
||||||
|
String.format(DRIVER_LOCATION, getDriverExecutable(isWindows()))).getFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isWindows() {
|
||||||
|
return System.getProperty("os.name").toLowerCase().contains("windows");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSize(Dimension dimension) {
|
||||||
|
driver.manage().window().setSize(dimension);
|
||||||
|
}
|
||||||
|
}
|
24
src/test/java/context/FirefoxContext.java
Normal file
24
src/test/java/context/FirefoxContext.java
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package context;
|
||||||
|
|
||||||
|
import org.openqa.selenium.firefox.FirefoxDriver;
|
||||||
|
|
||||||
|
public class FirefoxContext extends Context {
|
||||||
|
private final static String WINDOWS_DRIVER = "geckodriver.exe";
|
||||||
|
private final static String LINUX_DRIVER = "geckodriver";
|
||||||
|
private final static String DRIVER_TYPE = "webdriver.gecko.driver";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void createDriver() {
|
||||||
|
driver = new FirefoxDriver();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getDriverExecutable(boolean isWindows) {
|
||||||
|
return isWindows ? WINDOWS_DRIVER : LINUX_DRIVER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getDriverType() {
|
||||||
|
return DRIVER_TYPE;
|
||||||
|
}
|
||||||
|
}
|
14
src/test/java/core/PageObject.java
Normal file
14
src/test/java/core/PageObject.java
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package core;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
|
||||||
|
public abstract class PageObject {
|
||||||
|
protected WebDriver driver;
|
||||||
|
|
||||||
|
public abstract String getSubTitle();
|
||||||
|
|
||||||
|
public PageObject setDriver(WebDriver driver) {
|
||||||
|
this.driver = driver;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
29
src/test/java/core/TestTemplate.java
Normal file
29
src/test/java/core/TestTemplate.java
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
package core;
|
||||||
|
|
||||||
|
import context.ChromeContext;
|
||||||
|
import context.Context;
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.openqa.selenium.Dimension;
|
||||||
|
|
||||||
|
public abstract class TestTemplate {
|
||||||
|
private static Context context;
|
||||||
|
|
||||||
|
public static Context getContext() {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setup() {
|
||||||
|
context = new ChromeContext();
|
||||||
|
context.start();
|
||||||
|
context.setSize(new Dimension(1600, 900));
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void quit() {
|
||||||
|
if (context != null) {
|
||||||
|
context.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
src/test/java/paper/PaperPage.java
Normal file
11
src/test/java/paper/PaperPage.java
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package paper;
|
||||||
|
|
||||||
|
import core.PageObject;
|
||||||
|
import org.openqa.selenium.By;
|
||||||
|
|
||||||
|
public class PaperPage extends PageObject {
|
||||||
|
|
||||||
|
public String getSubTitle() {
|
||||||
|
return driver.findElement(By.tagName("h2")).getText();
|
||||||
|
}
|
||||||
|
}
|
11
src/test/java/paper/PapersDashboardPage.java
Normal file
11
src/test/java/paper/PapersDashboardPage.java
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package paper;
|
||||||
|
|
||||||
|
import core.PageObject;
|
||||||
|
import org.openqa.selenium.By;
|
||||||
|
|
||||||
|
public class PapersDashboardPage extends PageObject {
|
||||||
|
|
||||||
|
public String getSubTitle() {
|
||||||
|
return driver.findElement(By.tagName("h2")).getText();
|
||||||
|
}
|
||||||
|
}
|
11
src/test/java/paper/PapersPage.java
Normal file
11
src/test/java/paper/PapersPage.java
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package paper;
|
||||||
|
|
||||||
|
import core.PageObject;
|
||||||
|
import org.openqa.selenium.By;
|
||||||
|
|
||||||
|
public class PapersPage extends PageObject {
|
||||||
|
|
||||||
|
public String getSubTitle() {
|
||||||
|
return driver.findElement(By.tagName("h2")).getText();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user