Latest jbehave jars solved the problem

On Wed, Oct 31, 2018, 10:45 PM Gajendra Sahu <[email protected]
wrote:

> Any updates on this? I am facing the same issue.
>
> Running using JunitStories and the storyDuration.props has durations 0.
>
> On Friday, 23 February 2018 11:58:17 UTC-6, mauro.talevi wrote:
>>
>> Please package all this in a downloadable zip that can be opened and
>> run.  Don't forget a readme with tool versions etc
>>
>> On 23 Feb 2018, at 18:32, Maganti Suryanarayana murthy <[email protected]>
>> wrote:
>>
>> Hi Mauro Talevi,
>>
>> I have used gradle as a build file and please find the code base that i
>> am using. I am pasing build.gradle file and apptechJbehaveStories.java
>>
>> Build.gradle:
>>
>> def buildNumber = System.getProperty('buildNumber') ?: '0'
>> def buildVersion = '1.0.0-' + buildNumber
>>
>> version = buildVersion
>>
>> apply plugin: 'groovy'
>> apply plugin: 'java'
>> apply plugin: 'maven'
>>
>>
>> repositories {
>>     mavenCentral()
>>    }
>>
>> configurations {
>>     jbehave
>> }
>>
>> dependencies {
>>     testCompile group: 'junit', name: 'junit', version: '4.11'
>>     compile(group: 'org.jbehave.web', name: 'jbehave-web-selenium',
>> version:'4.0-beta-1') {
>>         exclude(module: 'selenium-remote-control')
>>         exclude(module: 'selenium-java')
>>         exclude(module: 'jbehave-core')
>>     }
>>     compile 'org.springframework:spring-webmvc:5.0.2.RELEASE'
>>     compile 'org.jbehave.site:jbehave-site-resources:3.3.1'
>>     compile 'org.jbehave:jbehave-spring:4.1.3'
>>     compile 'org.jbehave:jbehave-core:4.1.3'
>>     compile 'log4j:log4j:1.2.16'
>>     compile group: 'org.seleniumhq.selenium', name: 'selenium-java',
>> version: '3.7.1'
>>     compile group: 'commons-collections', name: 'commons-collections',
>> version: '3.2.1'
>>     testCompile group: 'org.jbehave', name: 'jbehave-core', version:
>> '4.1.3'
>>     compile 'org.jbehave.site:jbehave-site-resources:3.3.1:@zip'
>> }
>>
>> /** userDefined task to copy the srories from /src/main/stories into
>> build/classes/test/stories*/
>> task copyStories(type: Copy) {
>>     from 'src/main/resources' into "${buildDir}/classes/test"
>>     from 'src/main/stories' into "${buildDir}/classes/test/stories"
>> }
>>
>>
>> task copyJbehaveStyle(type: Copy) {
>>     from(zipTree(jarPath("jbehave-core"))) {
>>         include "style/*"
>>     }
>>     into("${buildDir}/classes/jbehave/view")
>> }
>>
>> task copyJbehaveUtilities(type: Copy) {
>>     from(zipTree(jarPath("jbehave-site-resources"))) {
>>         include "js/**/*"
>>         include "style/**/*"
>>         include "images/*"
>>     }
>>     into("${buildDir}/classes/jbehave/view")
>> }
>>
>> def jarPath(String jarName) {
>>     configurations.testCompile.find({ it.name.startsWith(jarName)
>> }).absolutePath
>> }
>>
>>
>> /** to specify the source for java and resources for test task, by
>> default this is refered to src/test folder in gradle and maven*/
>> sourceSets {
>>     test {
>>         java {
>>             srcDir "src/main/java"
>>         }
>>         resources {
>>             srcDir "src/main/resources"
>>         }
>>     }
>> }
>>
>> test {
>>     systemProperty "metaFilters", System.getProperty("metaFilters", "")
>>     doFirst {
>>         copy {
>>             from(zipTree(jarPath("jbehave-core"))) {
>>                 include "style/*"
>>             }
>>             into("build/reports/jbehave/view")
>>
>>         }
>>         copy {
>>             from(zipTree(jarPath("jbehave-site-resources"))) {
>>                 include "js/**/*"
>>                 include "style/**/*"
>>                 include "images/*"
>>             }
>>             into("build/reports/jbehave/view")
>>         }
>>     }
>>     systemProperties System.getProperties()
>>     dependsOn([clean,copyStories,copyJbehaveUtilities,copyJbehaveStyle])
>> }
>>
>>
>> apptechJBehaveStories.java
>>
>> package com.apptech.qmo;
>>
>> import com.apptech.qmo.ipt.QMOHtmlOutput;
>> import com.apptech.qmo.ipt.QMOStoryData;
>> import com.apptech.qmo.ipt.QMOStoryReporterBuilder;
>> import com.apptech.qmo.ipt.utils.Loggers;
>> import com.google.common.util.concurrent.MoreExecutors;
>> import org.apache.log4j.Logger;
>> import org.apache.log4j.PropertyConfigurator;
>> import org.jbehave.core.Embeddable;
>> import org.jbehave.core.configuration.Configuration;
>> import org.jbehave.core.embedder.Embedder;
>> import org.jbehave.core.embedder.StoryControls;
>> import org.jbehave.core.embedder.StoryTimeouts;
>> import org.jbehave.core.failures.FailingUponPendingStep;
>> import org.jbehave.core.failures.PendingStepStrategy;
>> import org.jbehave.core.i18n.LocalizedKeywords;
>> import org.jbehave.core.io.CodeLocations;
>> import org.jbehave.core.io.LoadFromClasspath;
>> import org.jbehave.core.io.StoryFinder;
>> import org.jbehave.core.junit.JUnitStories;
>> import org.jbehave.core.model.ExamplesTableFactory;
>> import org.jbehave.core.model.TableTransformers;
>> import org.jbehave.core.parsers.RegexStoryParser;
>> import org.jbehave.core.reporters.CrossReference;
>> import org.jbehave.core.reporters.Format;
>> import org.jbehave.core.reporters.HtmlTemplateOutput;
>> import org.jbehave.core.reporters.StoryReporterBuilder;
>> import org.jbehave.core.steps.InjectableStepsFactory;
>> import org.jbehave.core.steps.ParameterControls;
>> import org.jbehave.core.steps.ParameterConverters;
>> import org.jbehave.core.steps.spring.SpringStepsFactory;
>> import org.jbehave.web.selenium.*;
>> import org.springframework.context.ApplicationContext;
>> import
>> org.springframework.context.annotation.AnnotationConfigApplicationContext;
>>
>> import java.net.URL;
>> import java.text.SimpleDateFormat;
>> import java.util.ArrayList;
>> import java.util.Arrays;
>> import java.util.List;
>> import java.util.Properties;
>>
>> import static com.apptech.qmo.ipt.utils.DriverProvider.driver;
>> import static org.jbehave.core.io.CodeLocations.codeLocationFromClass;
>> import static org.jbehave.core.io.CodeLocations.getPathFromURL;
>> import static org.jbehave.core.reporters.Format.*;
>>
>> public class apptechJbehaveStories extends JUnitStories {
>>     private static final String _STORIES_SEPARATOR = ",";
>>     public static QMOHtmlOutput qmoHtmlOutput;
>>     public static QMOStoryData storyData;
>>     public static List<String> storyToExecute = null;
>>     static CrossReference crossReference = new
>> CrossReference().withJsonOnly().withOutputAfterEachStory(true);
>>     Logger log = Logger.getLogger(apptechJbehaveStories.class);
>>     PendingStepStrategy pendingStepStrategy = new
>> FailingUponPendingStep();
>>     ContextView contextView = new LocalFrameContextView().sized(640, 120);
>>     SeleniumContext seleniumContext = new SeleniumContext();
>>     //        SeleniumStepMonitor stepMonitor = new
>> SeleniumStepMonitor(contextView,
>> seleniumContext,crossReference.getStepMonitor());
>>     Format[] formats = new Format[]{new
>> SeleniumContextOutput(seleniumContext), Format.CONSOLE, XML, Format.HTML};
>>     StoryReporterBuilder reporterBuilder = new
>> QMOStoryReporterBuilder(storyData)
>>
>> .withCodeLocation(codeLocationFromClass(apptechJbehaveStories.class)).withFailureTrace(true)
>>
>> .withFailureTraceCompression(true).withDefaultFormats().withFormats(formats)
>>             .withCrossReference(crossReference);
>>     private ApplicationContext applicationContext;
>>     private WebDriverProvider driverProvider = new
>> PropertyWebDriverProvider();
>>     private WebDriverSteps lifecycleSteps = new
>> PerStoriesWebDriverSteps(driverProvider);
>>
>>     public apptechJbehaveStories() {
>>         super();
>>         try {
>>             System.setProperty("webdriver.chrome.driver",
>> "src/main/resources/drivers/chromedriver.exe");
>>             storyData = new QMOStoryData();
>>             String path =
>> apptechJbehaveStories.class.getProtectionDomain().getCodeSource().getLocation().getPath()
>> + "stories/log4j.properties";
>>             PropertyConfigurator.configure(path);
>>             if (lifecycleSteps instanceof PerStoriesWebDriverSteps) {
>>
>> configuredEmbedder().useExecutorService(MoreExecutors.newDirectExecutorService());
>>             }
>>         } catch (Exception e) {
>>             e.printStackTrace();
>>         }
>>     }
>>
>>     @Override
>>     public Configuration configuration() {
>>         new WebDriverScreenshotOnFailure(driverProvider, new
>> QMOStoryReporterBuilder());
>>         Class<? extends Embeddable> embeddableClass = this.getClass();
>>         Properties viewResources = new Properties();
>>         viewResources.put("decorateNonHtml", "true");
>>         LoadFromClasspath resourceLoader = new
>> LoadFromClasspath(embeddableClass);
>>         TableTransformers tableTranformers = new TableTransformers();
>>         // Start from default ParameterConverters instance
>>         ParameterConverters parameterConverters = new
>> ParameterConverters(resourceLoader, tableTranformers);
>>         ExamplesTableFactory examplesTableFactory = new
>> ExamplesTableFactory(new LocalizedKeywords(), resourceLoader,
>>                 parameterConverters, tableTranformers);
>>         // add custom converters
>>         parameterConverters.addConverters(new
>> ParameterConverters.DateConverter(new SimpleDateFormat("yyyy-MM-dd")),
>>                 new
>> ParameterConverters.ExamplesTableConverter(examplesTableFactory));
>>
>>         return new
>> SeleniumConfiguration().useSeleniumContext(seleniumContext)
>>                 .useWebDriverProvider(driverProvider)
>>                 .usePendingStepStrategy(pendingStepStrategy)
>>                 .useStoryControls(new
>> StoryControls().doResetStateBeforeScenario(true))
>>                 .useStoryLoader(new
>> LoadFromClasspath(apptechJbehaveStories.class))
>>                 .useStoryParser(new
>> RegexStoryParser(examplesTableFactory))
>>                 .useStoryReporterBuilder(new
>> QMOStoryReporterBuilder(storyData)
>>
>> .withCodeLocation(CodeLocations.codeLocationFromPath(getClassPath()))
>>                         .withFailureTrace(true)
>>                         .withFailureTraceCompression(true)
>>                         .withCrossReference(crossReference)
>>                         .withDefaultFormats()
>>                         .withFormats(Format.CONSOLE, Format.HTML,
>> Format.XML,Format.STATS))
>>                 .useParameterControls(new ParameterControls()
>>                         .useDelimiterNamedParameters(true))
>>                 .useParameterConverters(parameterConverters)
>>                 .useStepMonitor(crossReference.getStepMonitor());
>>     }
>>
>>     private List<String> getMetaFilters() {
>>         String metaFilterStr = System.getProperty("meta.filter");
>>         metaFilterStr = metaFilterStr == null ? "" : metaFilterStr;
>>         List<String> metaFilters =
>> Arrays.asList(metaFilterStr.split(","));
>>         log.info("**** MetaFilters = " + metaFilters);
>>         return metaFilters;
>>     }
>>
>>     private String getClassPath() {
>>         URL fileUrl = codeLocationFromClass(this.getClass());
>>         String classpath = getPathFromURL(fileUrl);
>>         System.out.println("getClassPath classpath = " + classpath);
>>         // class may come from a jar file
>>         if (classpath.endsWith(".jar!")) {
>>             int idx = classpath.lastIndexOf('.');
>>             classpath = classpath.substring(0, idx);
>>         }
>>         return classpath;
>>     }
>>
>>     @Override
>>     public InjectableStepsFactory stepsFactory() {
>>         if (this.applicationContext == null) {
>>             AnnotationConfigApplicationContext applicationContext = new
>> AnnotationConfigApplicationContext(com.apptech.qmo.ipt.configurations.SpringConfiguration.class);
>>             this.applicationContext = applicationContext;
>>         }
>>         return new SpringStepsFactory(configuration(),
>> this.applicationContext);
>>     }
>>
>>     public static class CustomTimeoutParser implements
>> StoryTimeouts.TimeoutParser {
>>
>>         public boolean isValid(String timeout) {
>>             return timeout.matches("(\\d+)secs");
>>         }
>>
>>         public long asSeconds(String timeout) {
>>             return
>> Long.parseLong(org.apache.commons.lang3.StringUtils.substringBefore(timeout,
>> "secs"));
>>         }
>>
>>     }
>>
>>     @Override
>>     public void run() throws Throwable {
>>         Embedder embedder = configuredEmbedder();
>>         embedder.useMetaFilters(getMetaFilters());
>>         // These should be enabled so that even though the stories fail
>> it wont go to catch method. Its useful when running multiple scenarios
>>         embedder.embedderControls().doIgnoreFailureInStories(true);
>>         embedder.embedderControls().doIgnoreFailureInView(false);
>>         embedder.embedderControls().doGenerateViewAfterStories(true);
>>
>> embedder.configuration().storyControls().doIgnoreMetaFiltersIfGivenStory(true);
>>         embedder.useTimeoutParsers(new CustomTimeoutParser());
>>         List<String> storyPaths = storyPaths();
>>         try {
>>             embedder.runStoriesAsPaths(storyPaths);
>>         } catch (Exception e) {
>>             Loggers.CONSOLE_LOGGER.error("STORY FAILED DUE TO:");
>>             e.printStackTrace(System.err);
>>             Loggers.FILE_LOGGER.error("STORY FAILED DUE TO:");
>>             e.printStackTrace(System.err);
>>             Loggers.CONSOLE_LOGGER.info("Driver instance is closing");
>>             Loggers.FILE_LOGGER.info("Driver instance is closing");
>>             embedder.generateCrossReference();
>>             throw new Throwable(e.fillInStackTrace());
>>         } finally {
>>             try {
>>                 Loggers.CONSOLE_LOGGER.info("Driver instance is
>> closing");
>>                 driver.quit();
>>                 Loggers.FILE_LOGGER.info("Driver instance is closing");
>>             } catch (Exception e) {
>>                 System.out.println("Issue in closing driver instance in
>> run method: " + e.getMessage());// Wantedly not caught the exception
>>             }
>>             embedder.generateCrossReference();
>>         }
>>     }
>>
>>     public String getStoryFromStoryPaths(String storyName, List<String>
>> storyPaths) {
>>         for (String story : storyPaths) {
>>             System.out.println("story = " + story);
>>             int stroryLength = story.split("/").length;
>>             if (story.split("/")[stroryLength -
>> 1].equalsIgnoreCase(storyName)) return story;
>>         }
>>         return "";
>>     }
>>
>>     @Override
>>     protected List<String> storyPaths() {
>>         final List<String> globList = new ArrayList<String>();
>>         final String[] globs = storyFilter().split(_STORIES_SEPARATOR);
>>         for (final String story : globs) {
>>             globList.add("**/*" + story + (story.endsWith(".story") ? ""
>> : ".story"));
>>         }
>>         String classpath = getClassPath();
>>         log.info("classpath=" + classpath);
>>         List<String> paths = new StoryFinder().findPaths(classpath,
>> globList, null);
>>         log.info("**** story paths = " + paths.toString());
>>         return paths;
>>     }
>>
>>     private String storyFilter() {
>>         String storyFilter = System.getProperty("story.filter");
>>         if (storyFilter == null) {
>>             storyFilter = "";
>>         }
>>         return storyFilter;
>>     }
>>
>>     public String captureReportName() {
>>         String storyName = null;
>>         String fileNames[] = reporterBuilder.outputDirectory().list();
>>         for (int i = 0; i < fileNames.length; i++) {
>>             if (fileNames[i].contains("html") &
>> !fileNames[i].contains("BeforeStories")) {
>>                 String name[] = fileNames[i].split(".html");
>>                 storyName = name[0];
>>             }
>>         }
>>         return storyName;
>>     }
>> }
>>
>>
>>
>> On Thursday, February 22, 2018 at 12:19:29 PM UTC-6, mauro.talevi wrote:
>>>
>>> You need to provide a sample project that reproduces the issue for us to
>>> help you.
>>>
>>> On 21 Feb 2018, at 16:39, Maganti Suryanarayana murthy <
>>> [email protected]> wrote:
>>>
>>> Any help on this
>>> ?
>>>
>>> On Tuesday, February 20, 2018 at 10:16:58 AM UTC-6, Maganti
>>> Suryanarayana murthy wrote:
>>>>
>>>> Any one is facing above issue ?
>>>>
>>>> On Tuesday, February 20, 2018 at 9:42:28 AM UTC-6, Maganti
>>>> Suryanarayana murthy wrote:
>>>>>
>>>>> Jbehave story report is not showing the time in report i.e., the
>>>>> Duration is shown as 00:00:00.000. I am using gradle as a build tool.
>>>>>
>>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "JBehave User" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>> To view this discussion on the web, visit
>>> https://groups.google.com/d/msgid/jbehave-user/6376be18-29ad-444f-9670-79a4a6eae694%40googlegroups.com
>>> <https://groups.google.com/d/msgid/jbehave-user/6376be18-29ad-444f-9670-79a4a6eae694%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>> --
>> You received this message because you are subscribed to the Google Groups
>> "JBehave User" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> To view this discussion on the web, visit
>> https://groups.google.com/d/msgid/jbehave-user/045c006d-6548-466d-ab71-311b365880e6%40googlegroups.com
>> <https://groups.google.com/d/msgid/jbehave-user/045c006d-6548-466d-ab71-311b365880e6%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>> --
> You received this message because you are subscribed to a topic in the
> Google Groups "JBehave User" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/jbehave-user/aKfyLJmdsyY/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web, visit
> https://groups.google.com/d/msgid/jbehave-user/604eab3b-5b98-4908-a71b-c6b1680f0354%40googlegroups.com
> <https://groups.google.com/d/msgid/jbehave-user/604eab3b-5b98-4908-a71b-c6b1680f0354%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"JBehave User" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send an email to [email protected].
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/jbehave-user/CALPCmQ0g%2BjEn8UU_APV4TGPbk2zGahASR540Ghp%2B9tk%2BqcrWWA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to