Skip to content
Snippets Groups Projects
Commit 7d8d608e authored by Ruben Backx's avatar Ruben Backx :coffee:
Browse files

Add end to end testing example

parent 13f3dad2
Branches
Tags
2 merge requests!720Version 2.2.2,!713Add end to end testing example
......@@ -280,6 +280,16 @@ tasks.withType<Test>().configureEach {
showStandardStreams = false
}
}
tasks.getByName<Test>("test") {
filter {
excludeTestsMatching("e2e.*")
}
}
tasks.register<Test>("e2eTest") {
filter {
includeTestsMatching("e2e.*")
}
}
dependencies {
/////// Spring dependencies ///////
......@@ -406,6 +416,8 @@ dependencies {
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.springframework.security:spring-security-test")
testImplementation("com.microsoft.playwright:playwright:1.38.0")
/////// Annotation processing dependencies ///////
annotationProcessor("javax.annotation:javax.annotation-api")
......
/*
* Queue - A Queueing system that can be used to handle labs in higher education
* Copyright (C) 2016-2021 Delft University of Technology
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package e2e;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestInstance;
import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public abstract class EndToEndTest {
protected Playwright playwright;
protected Browser browser;
protected BrowserContext context;
protected Page page;
public EndToEndTest() {
this.playwright = Playwright.create();
this.browser = playwright.webkit().launch();
}
@BeforeEach
void createContext() {
context = browser.newContext();
page = browser.newPage();
}
@AfterAll
void close() {
playwright.close();
}
}
/*
* Queue - A Queueing system that can be used to handle labs in higher education
* Copyright (C) 2016-2021 Delft University of Technology
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package e2e;
import java.nio.file.Paths;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.options.AriaRole;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class ExampleEndToEndTest extends EndToEndTest {
@Test
void takeScreenShot() {
page.navigate("localhost:8081");
page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("build/screenshots/test.png")));
}
@Test
void login() {
page.navigate("http://localhost:8081/");
page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("Click here to log in")).click();
page.getByLabel("Username").click();
page.getByLabel("Username").fill("cseteacher1");
page.getByLabel("Username").press("Tab");
page.getByLabel("Password").fill("cseteacher1");
page.getByLabel("Password").press("Enter");
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment