diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..6b472b8
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,16 @@
+version: 2
+updates:
+- package-ecosystem: "maven"
+ directory: "/"
+ schedule:
+ interval: "weekly"
+ time: "09:00"
+ open-pull-requests-limit: 10
+
+- package-ecosystem: "github-actions"
+ # Workflow files stored in the
+ # default location of `.github/workflows`
+ directory: "/"
+ schedule:
+ interval: "weekly"
+ time: "09:00"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..0daa3d2
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,26 @@
+name: CI
+
+on: [push, pull_request]
+
+jobs:
+ build:
+ name: Build on Java ${{ matrix.java }}
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ java: [ 8, 17 ]
+ steps:
+ - uses: actions/checkout@v2.3.4
+ - uses: actions/cache@v2.1.6
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - name: Set up Java ${{ matrix.java }}
+ uses: actions/setup-java@v2
+ with:
+ java-version: ${{ matrix.java }}
+ distribution: 'zulu'
+ - name: Build with Java ${{ matrix.java }}
+ run: mvn clean verify
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..ea34d20
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,20 @@
+name: Publish package to GitHub Packages
+
+on: [workflow_dispatch]
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ packages: write
+ steps:
+ - uses: actions/checkout@v2.3.4
+ - uses: actions/setup-java@v2
+ with:
+ java-version: '8'
+ distribution: 'zulu'
+ - name: Publish package
+ run: mvn deploy
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2c36dea
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+# ignore all idea files
+.idea/*
+!.idea/codeStyleSettings.xml
+
+
+### Intellij Patch ###
+# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
+
+*.iml
+modules.xml
+.idea/misc.xml
+*.ipr
+
+### Maven ###
+target/
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+
+# Exclude maven wrapper
+!/.mvn/wrapper/maven-wrapper.jar
+
diff --git a/README.md b/README.md
index 3f15ed6..cfb6c40 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,8 @@
# jbehave-support-web-tables
Web table steps for jbehave-support-core - legacy unsupported version
+
+Provided only for potential backwards compatibility workarounds for legacy applications that used them in jbehave-support-core 1.x.x.
+Not intended for any use in new projects.
+
+**WARNING**: Not supported, please **use at your own risk**. If you want/plan to use this please **contact us** and let us know.
+(so that we might potentially continue development if there is enough interest)
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..14b5e15
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,52 @@
+
+
+ 4.0.0
+
+ org.jbehavesupport
+ jbehave-support-web-tables
+ 1.0-SNAPSHOT
+
+
+ 8
+ 8
+ UTF-8
+
+ 1.18.22
+ 1.3.2
+
+
+
+
+ github
+ GitHub Packages
+ https://maven.pkg.github.com/EmbedITCZ/jbehave-support-web-tables
+
+
+
+
+
+
+ src/test/java
+
+ **/*.story
+
+
+
+
+
+
+
+ org.jbehavesupport
+ jbehave-support-core
+ ${jbehave-support.version}
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/org/jbehavesupport/web/tables/LegacyWebTableSteps.java b/src/main/java/org/jbehavesupport/web/tables/LegacyWebTableSteps.java
new file mode 100644
index 0000000..622c7b8
--- /dev/null
+++ b/src/main/java/org/jbehavesupport/web/tables/LegacyWebTableSteps.java
@@ -0,0 +1,376 @@
+package org.jbehavesupport.web.tables;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import junit.framework.AssertionFailedError;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.jbehave.core.annotations.Given;
+import org.jbehave.core.annotations.Then;
+import org.jbehave.core.model.ExamplesTable;
+import org.jbehave.core.steps.Row;
+import org.jbehavesupport.core.web.WebElementRegistry;
+import org.jbehavesupport.core.web.WebSetting;
+import org.jbehavesupport.core.web.WebSteps;
+import org.openqa.selenium.By;
+import org.openqa.selenium.JavascriptExecutor;
+import org.openqa.selenium.NoSuchElementException;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedCondition;
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class LegacyWebTableSteps {
+
+ private static final String TEXT_CONTENT = "textContent";
+ private static final int MAXIMUM_LOCATE_ATTEMPTS = 2;
+
+ public enum HtmlRenderer {
+ SIMPLE,
+ WICKET
+ }
+
+ private final WebDriver driver;
+ private final WebElementRegistry elementRegistry;
+
+ @Autowired(required = false)
+ private List webSettings;
+
+ @Given("on [$page] page in table [$table] row $rowNumber, column $columnNumber is clicked")
+ public void clickCell(String page, String tableName, int rowNumber, int columnNumber) {
+ WebElement table = findElementByPageAndName(page, tableName);
+ List tableRows =
+ table.findElement(By.className("imxt-body")).findElements(By.className("imxt-grid-row"));
+ List row = tableRows.get(rowNumber - 1).findElements(By.tagName("td"));
+ WebElement td = row.get(columnNumber - 1);
+ td.findElement(By.tagName("a")).click();
+ }
+
+ @Then("on [$page] page the table [$tableName] contains exactly the following data:$expectedData")
+ public void tableContainsExactlyFollowingData(String page, String tableName, ExamplesTable data) {
+ List