Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Nov 06 21:38
    dependabot[bot] labeled #786
  • Nov 06 21:38
    dependabot[bot] opened #786
  • Nov 06 21:38

    dependabot[bot] on npm_and_yarn

    Bump eslint from 3.19.0 to 4.18… (compare)

  • Nov 06 21:38
    dependabot[bot] labeled #784
  • Nov 06 21:38
    dependabot[bot] labeled #785
  • Nov 06 21:38
    dependabot[bot] opened #785
  • Nov 06 21:38
    dependabot[bot] opened #784
  • Nov 06 21:38

    dependabot[bot] on npm_and_yarn

    Bump lodash from 4.17.4 to 4.17… (compare)

  • Nov 06 21:38

    dependabot[bot] on npm_and_yarn

    Bump marked from 0.3.6 to 0.3.1… (compare)

  • Aug 21 13:28
    jeremydmiller labeled #783
  • Aug 21 13:28
    jeremydmiller opened #783
  • Aug 19 21:23

    jeremydmiller on v6

    fleshing out ExecutionResult or… spiking new AdhocRunner and mor… (compare)

  • Aug 18 19:36

    jeremydmiller on v6

    work in progress more exploratory coding more definition of the new engi… and 2 more (compare)

  • Jul 12 16:28
    jeremydmiller closed #781
  • Jul 12 16:28
    jeremydmiller closed #779
  • Jul 12 16:28
    jeremydmiller closed #780
  • Jul 12 16:28

    jeremydmiller on master

    preliminary work on Csv grammars added Metadata to Cell. Closes … preliminary work to add Section… and 3 more (compare)

  • Jul 12 13:44
    jeremydmiller milestoned #782
  • Jul 12 13:44
    jeremydmiller milestoned #781
  • Jul 12 13:44
    jeremydmiller milestoned #780
Jeremy D. Miller
@jeremydmiller
I still don’t know what the root cause was, but dotnet storyteller was stuck way back at AspNetCore 1., so I updated that to the latest, and now that process only targets netcoreapp2.0 or 2.1. You *can still target >= .Net 4.6 in your specification project though
Jeremy D. Miller
@jeremydmiller
I know this has been very dormant for the past couple years, but I have been thinking pretty hard about where Storyteller could go next. See what y’all think about this: https://jeremydmiller.com/2019/05/27/spitballing-the-future-of-storyteller/
Sergei Golos
@SergeiGolos
Good read, all good stuff. I would be happy to give you some user testing feedback, as you know i am full of it despite not being asked for it :) By the way, thank you so much for resolving the nuget issues.
Jeremy D. Miller
@jeremydmiller
Meh, I still don’t understand why that dependency was in the mix. It didn’t show up anywhere in the assets.json files, but that Nuget version was de-listed and there goes the explosion. I beat the issue by making dotnet storyteller ASP.Net Core v2.* only. Which spilled into some net46 to Core serialization woes which leads to that blog post and time for a modernization all the way around.
Sergei Golos
@SergeiGolos
Also, while i don't have any React specific web development experience, I would love to dive in and work on a react project to get some practical experience in it. Count me in as a contributor.
Jeremy D. Miller
@jeremydmiller
I’ll happily take any kind of feedback
Sergei Golos
@SergeiGolos
If you will take a n00b :)
Jeremy D. Miller
@jeremydmiller
Cool! It was kind of fun the first time around, and that world is quite a bit better than it was in 15-16
Sergei Golos
@SergeiGolos
The UI you built is the main reason why I am pushing for Storyteller over Fitnesse adaptation at my work, any effort to make that UI more robust and friendly for business/none technical people is huge benefit to the project..
Jeremy D. Miller
@jeremydmiller
You’re still using Fitnesse? I haven’t bumped into many people lately who even remember FIT. Everything is Gherkhin this or that now.
There’s plenty of room for improvement on that front. Storyteller has always been developer-centric. At a previous shop we at least had success getting testers to work with it a little bit, but mostly just to review specs
A former colleague of mine went back to the company where we’d originally written ST, and he’s had a lot of success getting the actual product owner (an ex-Dev though) to review specs with it
Sergei Golos
@SergeiGolos
Fitnesse is now grandfathered in on a bunch of projects simply because of the quantity of code already written for it. The lack of quality of that code gives is a chance to break out of fitnesse and start fresh on a new revision of the product.
Robert Weber
@robocode13
Hi everbody,
is there a way to execute some cleanup logic after a specification (test case) has finished.
The TearDown method of a Fixture will not help here because it is called too early. My specification consists of sections of several Fixtures where the first Fixture will setup some data and then some logic is executed from another Fixture. Only after all fixture code has finished should the set up data from the first running fixture be cleaned up.
I was thinking about some lifecycle event handlers in the Fixture class like OnSpecificationFinished() in addition to the already existing TearDown().
Obviously there currently is no such method. Is there another way to achieve something similar or is this a good topic for a feature request ;-) ?
mvastarelli
@mvastarelli
@jeremydmiller If you need any help with the parallelization updates to ST I'd be happy to lend a hand. BTW, just a disclaimer, @SergeiGolos and I have been colleagues for over 10 years now.
Jarrod
@JarrodJ83
@jeremydmiller is there a timeout of some sort for a grammar to execute. I'm running into an issue where I have a grammar that just does awaits a Task.Delay. If I make it for any longer than 60 seconds the UI will not continue processing when the wait completes. If I make it less than 60 there doesn't seem to be any issues. Any thoughts? Am I missing something obvious?
Right around 60 seconds I notice the UI changes as well and all the check marks next to the steps that have already been executed disappear
Jeremy D. Miller
@jeremydmiller
The specification itself has a timeout that defaults to 60 seconds. Check the docs, there’s ways of overwriting that.
Already thought that we’d surface that better in the UI for 6.0.
You have to have a timeout to prevent runaway tests. Especially if naive Selenium tests are anywhere.
Jarrod
@JarrodJ83
Sorry I must have missed that in the docs. I'll check it out. Thanks for the info!
Jarrod
@JarrodJ83
@jeremydmiller the only thing I see is the --timeout flag that can be passed to the storyteller run command. Doesn't seem like there is a way to specify the timeout on a per-spec basis or globally while using the editor. Am I missing something?
Jeremy D. Miller
@jeremydmiller
Doh! Maybe so.
Is that not an input flag on the dotnet storyteller command? Like dotnet storyteller —timeout #?
Jarrod
@JarrodJ83
Looks like it is only on RunInput (not OpenInput)
Jeremy D. Miller
@jeremydmiller
That’s a big miss, okay.
For v6, I want that to be somethign that’s surfaced in the UI
Jarrod
@JarrodJ83
That'd be nice
In my particular case I just need it at a grammar level. Were you thinking of keeping at the spec level or possibly having it set at multiple levels?
Jeremy D. Miller
@jeremydmiller
At the spec level. You can reinforce “performance thresholds” at the grammar level, but that just fails the build. Doesn’t stop the execution
You’d have to do that one yourself
Jarrod
@JarrodJ83
Just some info on my use case: I'm testing some authn stuff so have a grammar that basically waits for an access token to expire. In my case any spec that uses it would need to have a longer timeout or it wouldn't work right so that is why I was curious about a grammar level settings
Sergei Golos
@SergeiGolos

@jeremydmiller i have been looking at the code for a day or two, and i think that I have misunderstandings about the role of the IGrammar method on a fixture.

I am using storyteller to test the validity of a system installation (smoke test), but have a variable number of configurations during install that would effect which subsystems are running and require testing. So I was thinking that the I could create a method that created different Facts based on what we see in the installed configuration files. But I think by doing this, I am bumping elbows with the logical separation of Fixture from Specification and execution contexts. I see the the this.Context object which exposes services to my fixutres is not yet defined when the function is executed.

So my question, am I doing something completely not intended or is this kind of what you were thinking when you allowed dynamic IGrammar generation? And a follow up, if it was the design idea behind the IGrammar methods, is there an obvious way i am missing to get service injection at method execution time (since the generated grammars are executed later)?

Jeremy D. Miller
@jeremydmiller
@SergeiGolos You might be trying to use Storyteller in a place where xUnit.Net is more appropriate
Fixture.Context would only be available at the time the specification is being executed
Sergei Golos
@SergeiGolos
We are looking at stoyteller as a way of spot checking QA and OPS installations of our software and if errors are found generating reports that reduce my teams time to troubleshoot. This seems a bit of a stretch for xUnit, and the storyteller reports seem to really fit the bill for detailed feedback on generated logs and system configuration.
Jeremy D. Miller
@jeremydmiller
Are you getting tripped up on the Fixture class’s lifecycle then?
Sergei Golos
@SergeiGolos
Kind of, what i am trying to first figure out is if my usecase of "optional" steps is outside of the expected storyteller workflow. (assuming the user is dumb and can't select appropriate tags to select the tests we want to run.)
Jeremy D. Miller
@jeremydmiller
Storyteller isn’t going to do any kind of optional step like that, no.
You could do something in the Fixture code that short circuits the check I suppose and stubs in a success
Sergei Golos
@SergeiGolos
Well from looking at the code, that's kind of what i though the methods resulting in IGrammar were for, but it seems that at that point in time you don't have access to the system at test.
Jeremy D. Miller
@jeremydmiller
Correct. “IGrammar” is kind of like a recipe for an action or an assertion that will happen at specification time. You’re creating a syntax to be used within specifications
Sergei Golos
@SergeiGolos
And all the Fixtures are loaded and compiled into specifications before the system under test is loaded?
Jeremy D. Miller
@jeremydmiller
Not quite. The Fixtures are built independently of loading either the system or the specifications. As part of execution, specifications are “planned” where the steps are attached to all the right IGrammars, but that’s meant to be an implementation detail
Sergei Golos
@SergeiGolos
Right, that makes sense. So is there any other way to get service resolution when the IGrammer method is compiled? It seems because of the Fixture composition features, we can't really do DI on fixture, and have a static singleton DI container seems bad.
Jeremy D. Miller
@jeremydmiller
Nope, you’d need to make everything lazy.
And as of Storyteller 3.0, it purposely does not do dependency injection against Fixtures because that became a performance issue to rebuild Fixture objects for every test
Sergei Golos
@SergeiGolos
ok thank you for your time, seems like i need to go back to the drawing board here
Jeremy D. Miller
@jeremydmiller
Yeah. I don’t think Storyteller is gonna be your guy here unless you can live within its normal idioms
Udemy free courses
@ayoub50706635_twitter
Hello has anyone tried the IGrammer Method ?