diff --git a/pom.xml b/pom.xml
index e500dc8..87f389a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,6 +37,10 @@
UTF-8
1.7
1.7
+ 3.3.2
+ 2.4.0
+ 4.12
+ 1.7.22
@@ -52,27 +56,39 @@
org.apache.commons
commons-lang3
- 3.3.2
+ ${version.commons-lang3}
+ jar
+
+
+ io.cucumber
+ cucumber-java
+ ${version.cucumber}
jar
junit
junit
- 4.12
+ ${version.junit}
test
org.slf4j
slf4j-api
- 1.7.22
+ ${version.slf4j}
jar
org.slf4j
slf4j-log4j12
- 1.7.22
+ ${version.slf4j}
jar
+
+ org.mockito
+ mockito-all
+ 1.9.5
+ test
+
diff --git a/src/main/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtils.java b/src/main/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtils.java
new file mode 100644
index 0000000..263c200
--- /dev/null
+++ b/src/main/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtils.java
@@ -0,0 +1,35 @@
+package ru.sbtqa.tag.qautils.cucumber;
+
+import cucumber.api.Scenario;
+import cucumber.runtime.io.MultiLoader;
+import cucumber.runtime.model.CucumberFeature;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class CucumberUtils {
+
+ private static final Logger LOG = LoggerFactory.getLogger(CucumberUtils.class);
+ private static final String DEFAULT_LANGUAGE = "en";
+
+ private CucumberUtils() {
+ }
+
+ public static Locale getLocale(Scenario scenario) {
+ List scenarioPaths = new ArrayList<>();
+ scenarioPaths.add(scenario.getUri());
+
+ MultiLoader multiLoader = new MultiLoader(ClassLoader.getSystemClassLoader());
+ String language = DEFAULT_LANGUAGE;
+ try {
+ CucumberFeature cucumberFeature = CucumberFeature.load(multiLoader, scenarioPaths).get(0);
+ language = cucumberFeature.getGherkinFeature().getFeature().getLanguage();
+ } catch (Exception e) {
+ LOG.warn("Error while reading feature with uri {}. Using default language {} as fallback", scenario.getUri(), DEFAULT_LANGUAGE, e);
+ }
+
+ return new Locale(language);
+ }
+}
diff --git a/src/test/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtilsTest.java b/src/test/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtilsTest.java
new file mode 100644
index 0000000..27ce16a
--- /dev/null
+++ b/src/test/java/ru/sbtqa/tag/qautils/cucumber/CucumberUtilsTest.java
@@ -0,0 +1,34 @@
+package ru.sbtqa.tag.qautils.cucumber;
+
+import cucumber.api.Scenario;
+import cucumber.runtime.ScenarioImpl;
+import java.util.Locale;
+import org.junit.Assert;
+import org.junit.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class CucumberUtilsTest {
+
+ @Test
+ public void returnCorrectLanguageLocaleTest() {
+ Scenario scenario = mock(ScenarioImpl.class);
+ when(scenario.getUri()).thenReturn("src/test/resources/features/Correct.feature");
+ Locale expectedLocale = new Locale("ru");
+
+ Locale actualLocale = CucumberUtils.getLocale(scenario);
+
+ Assert.assertEquals(expectedLocale, actualLocale);
+ }
+
+ @Test
+ public void fallbackToDefaultLanguageTest() {
+ Scenario scenario = mock(ScenarioImpl.class);
+ when(scenario.getUri()).thenReturn("src/test/resources/features/Empty.feature");
+ Locale expectedLocale = new Locale("en");
+
+ Locale actualLocale = CucumberUtils.getLocale(scenario);
+
+ Assert.assertEquals(expectedLocale, actualLocale);
+ }
+}
diff --git a/src/test/resources/features/Correct.feature b/src/test/resources/features/Correct.feature
new file mode 100644
index 0000000..3649419
--- /dev/null
+++ b/src/test/resources/features/Correct.feature
@@ -0,0 +1,5 @@
+#language:ru
+Функционал: Тестовая фича
+
+ Сценарий: Тестовый сценарий
+ * открывается страница "Тестовая страница"
\ No newline at end of file
diff --git a/src/test/resources/features/Empty.feature b/src/test/resources/features/Empty.feature
new file mode 100644
index 0000000..4cef802
--- /dev/null
+++ b/src/test/resources/features/Empty.feature
@@ -0,0 +1,4 @@
+Функционал: Тестовая фича
+
+ Сценарий: Тестовый сценарий
+ * открывается страница "Тестовая страница"
\ No newline at end of file