Git Product home page Git Product logo

browser.xunit's Introduction

Howdy ๐Ÿ‘‹

Welcome to my README! If you're reading this, I'm guessing you're hear to learn a bit about me. So let's go!

About Me

I'm a lifelong programmer who's love is diving into new projects and ideas, and moving both developer and user experience forward constantly. This carries me forward whether in my day-to-day work on my company's product, improving the state of our internal tooling and platform, or contributing a array for OSS projects.

Currently Working On

Right now, my big focus is on Kubernetes and cloud native tech. Specifically making it more accessible and robust for developers. The ecosystem around k8s and many cloud native technologies is rich but often unfriendly to newcomers, or workable for platform and tooling teams but unfriendly for the rest of engineering orgs. As someone tackling this at my own company, I'd like to carry that work forward to the broader community.

Looking for Help?

Most of my contributions go to tools that my org's teams interact with on a regular basis or will be soon, but I'm always up to contribute however I can to projects in need (within moderation). What are some things I can help with?

Technologies

  • .NET (Core)
  • NodeJS
  • Web (HTML/CSS/JS/TS)
  • Go (WIP)
  • Kubernetes

Aspects

  • Public Documentation
  • Contributor Documentation
  • CI/CD
  • Project UX
  • Dev UX

Thank you for reading! ๐Ÿ™‹โ€โ™‚

This README, as with a lot of my work, is a WIP

browser.xunit's People

Contributors

richicoder1 avatar

Watchers

 avatar  avatar  avatar

browser.xunit's Issues

Create Global Setup and Teardown Extensibility Points

One of the bigger goals of this framework is to allow bootstrapping the environment to run browsers against, as well as enabling better browser capture. To enable the former, we should add an extensibility point that allows assemblies to define actions that should be performed before, and after, test assembly execution.

To identify this, a new attribute and interface would be defined. The attribute would identify the type that hosts the Before and After methods, and the interface would define the contract for the method signatures.

Proposed types:

BeforeAfterAssemblyTestsAttribute

class BeforeAfterAssemblyTestsAttribute : Attribute
{
    public Type BeforeAfterAssemblyType { get; }
}

IBeforeAfterAssemblyTests

interface IBeforeAfterAssemblyTests
{
    Task Before();
    Task After();
}

Potential Issues

  • Should IBeforeAfterAssemblyTests allow a parameterized constructor?
  • Should the IBeforeAfterAssemblyTest interface simply be merged with BeforeAfterAssemblyTestsAttribute? I lean no one this, simply because the assembly might be interested in holding significant state inbetween Before and After and would allow cleaner code for the end user of the framework.

Changelog

Changed Before to be parameterless. If we're going to pass it an assembly info, we should do it in the constructor.

Allow Test Classes to observe test errors

It is desirable that test classes be able to be informed of test errors before test class disposal to allow things like dumps and screenshotting. Current xUnit exposes BeforeAfterTestAttribute, but this attribute provides neither guarantees on when it will run nor does it allow After to know if the test succeeded or failed.

Proposed Solutions:

@pawelpabich has proposed the addition of two (or technically, three) new interfaces that a test class can implement:

INeedToKnowTestSuccess

    public interface INeedToKnowTestSuccess : INeedToKnowTestResult
    {
        void Handle(TestPassed result);
    }

INeedToKnowTestFailure

    public interface INeedToKnowTestFailure : INeedToKnowTestResult
    {
        void Handle(TestFailed result);
    }

INeedToKnowTestResult

    public interface INeedToKnowTestResult
    {
    }

These interfaces, if they exist, would be invoked after the Test Method has been invoked but before any other actions.

3rd party integration

This is more a question. Will this new approach work with VS and/or R# test runner?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.