diff --git a/build.gradle b/build.gradle index 9ae7e59..98ea1d5 100644 --- a/build.gradle +++ b/build.gradle @@ -23,13 +23,9 @@ dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1' implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.8.20' implementation 'org.jetbrains.kotlin:kotlin-reflect:1.8.20' - implementation 'io.cucumber:cucumber-testng:7.14.0' - implementation 'io.cucumber:cucumber-java:7.14.0' implementation 'org.slf4j:slf4j-api:1.7.32' - implementation 'ch.qos.logback:logback-classic:1.2.6' implementation 'org.projectlombok:lombok:1.18.30' implementation 'org.jsoup:jsoup:1.15.4' - implementation 'org.springframework:spring-context:6.0.9' implementation 'org.testng:testng:7.8.0' implementation("io.rest-assured:rest-assured:5.1.1") } diff --git a/src/main/kotlin/core/web/elements/Element.kt b/src/main/kotlin/core/web/elements/Element.kt new file mode 100644 index 0000000..adf83ce --- /dev/null +++ b/src/main/kotlin/core/web/elements/Element.kt @@ -0,0 +1,16 @@ +package core.web.elements + +import com.microsoft.playwright.Locator +import core.web.browser.InitialBrowser + +open class Element { + @JvmField + protected var page = InitialBrowser.getInstance().getPage().context().pages().last() + protected fun `$`(locator: String?): Locator { + return page.context().pages().last().locator(locator) + } + + protected fun `$$`(locator: String?): List { + return page.context().pages().last().locator(locator).all() + } +} \ No newline at end of file diff --git a/src/main/kotlin/projects/example/ExamplePageStepDefs.kt b/src/main/kotlin/projects/example/ExamplePageStepDefs.kt deleted file mode 100644 index 6735aac..0000000 --- a/src/main/kotlin/projects/example/ExamplePageStepDefs.kt +++ /dev/null @@ -1,14 +0,0 @@ -package projects.example - -import core.properties.PropertiesReader -import core.web.elements.Window -import io.cucumber.java.en.Given - -class ExamplePageStepDefs { - private val window: Window = Window() - - @Given("^user is on example URL$") - fun openExampleURL() { - window.navigateTo(PropertiesReader().urlsProperties().exampleURL) - } -} \ No newline at end of file diff --git a/src/main/kotlin/projects/example/pages/examplePage.kt b/src/main/kotlin/projects/example/pages/examplePage.kt new file mode 100644 index 0000000..16e37f5 --- /dev/null +++ b/src/main/kotlin/projects/example/pages/examplePage.kt @@ -0,0 +1,9 @@ +package projects.example.pages + +import core.web.elements.Element + +class examplePage : Element() { + val pageTitle = + `$`("//div//h1") + +} \ No newline at end of file diff --git a/src/main/kotlin/projects/example/stepDefs/ExamplePageStepDefs.kt b/src/main/kotlin/projects/example/stepDefs/ExamplePageStepDefs.kt new file mode 100644 index 0000000..67a3595 --- /dev/null +++ b/src/main/kotlin/projects/example/stepDefs/ExamplePageStepDefs.kt @@ -0,0 +1,21 @@ +package projects.example.stepDefs + +import core.properties.PropertiesReader +import core.web.elements.Window +import projects.example.pages.examplePage + +class ExamplePageStepDefs { + private val window: Window = Window() + private val examplePage: examplePage + get() = examplePage() + + fun openExampleURL() { + window.navigateTo(PropertiesReader().urlsProperties().exampleURL) + } + + fun assertPageTitle(title: String){ + if (!examplePage.pageTitle.textContent().equals(title)) { + throw AssertionError("Expected title: '$title', but found: '$examplePage.pageTitle'") + } + } +} \ No newline at end of file diff --git a/src/test/kotlin/UITestTask.kt b/src/test/kotlin/UITestTask.kt index 1c33057..cdfee4b 100644 --- a/src/test/kotlin/UITestTask.kt +++ b/src/test/kotlin/UITestTask.kt @@ -1,9 +1,10 @@ import org.testng.annotations.Test -import projects.example.ExamplePageStepDefs +import projects.example.stepDefs.ExamplePageStepDefs class UITestTask { @Test fun openExampleUrl() { ExamplePageStepDefs().openExampleURL() + ExamplePageStepDefs().assertPageTitle("Example Domain") } } \ No newline at end of file