npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

elm-ordeal

v0.0.5

Published

Run tests like a boss

Downloads

6

Readme

elm-ordeal

Write unit tests in Elm, support async Task out of the box, can run directly on Node or any major browsers.

Warning This is still a work in progress, API will probably change a bit before 1.0 release.

Install

elm-package install pauldijou/elm-ordeal

Writing your first tests

port module Test exposing (..)

import Task
import Ordeal exposing (..)

main: OrdealProgram
main = run emit tests

port emit : Event -> Cmd msg

tests: Test
tests =
  describe "My first suite"
    [ test "My very first test" (
      "a" |> shouldEqual "a"
    )
    , describe "A sub-suite"
      [ test "And a sub-test" (
        { a = 1, b = False } |> shouldEqual { a = 1, b = False }
      )
      , test "Another sub-test" (
        True |> shouldNotEqual False
      )
      ]
    , xtest "A skipped test" (
      "a" |> shouldEqual "b"
    )
    , test "My first async test" (
      Task.succeed 42 |> andTest (\value -> value |> shouldBeGreaterThan 35)
    )
    , test "My first failure" (
      Task.fail { a = 1, b = "aze" } |> andTest (\value -> value |> shouldEqual "54")
    )
    , test "Another failure" (
      ["a","b","c"] |> shouldContain "d"
    )
    ]

Running tests

The easiest way is to use the elm-ordeal CLI with Yarn or NPM.

Getting started

# NPM users
npm install --save-dev elm-ordeal
# Yarn users
yarn add --dev elm-ordeal

# Run
elm-ordeal your/TestFile.elm

# Learn
elm-ordeal --help

You could also update your package.json file:

{
  "scripts": {
    "test": "elm-ordeal your/TestFile.elm"
  }
}
# Then run the added script
npm test
yarn test

Envs

You can run your tests on the following environments, just specify the correct CLI argument when running elm-ordeal. Don't forget it's up to you to locally install any browser you want to use. If you don't provide any env, it will run as Node. You can specify several envs at once of course.

  • Node (--node)
  • Chrome (--chrome)
  • Edge Explorer (--edge)
  • Firefox (--firefox)
  • Internet Explorer (--ie)
  • Opera (--opera)
  • Safari (--safari)

Combinators

You can combine tests using Ordeal.and or Ordeal.or. Here is the result of combining two tests:

⮳ and | Success | Skipped | Timeout | Failure ------------|---------|---------|---------|-------- Success | Success | Success | Timeout | Failure Skipped | Success | Skipped | Timeout | Failure Timeout | Timeout | Timeout | Timeout | Timeout Failure | Failure | Failure | Failure | Failure

⮳ or | Success | Skipped | Timeout | Failure ------------|---------|---------|---------|-------- Success | Success | Success | Success | Success Skipped | Success | Skipped | Timeout | Failure Timeout | Success | Timeout | Timeout | Failure Failure | Success | Failure | Timeout | Failure

In case of two Failure, Ordeal.and will return the first one while Ordeal.or will return the second one.

You can also use Ordeal.all and Ordeal.any which works on list of tests just folding them using Ordeal.and and Ordeal.or respectively.

Why? Why not just use elm-test?

It's up to you, I think elm-test is good but when I started writing tests in Elm, I needed to test Task and there was no way to do it easily using elm-test (not sure if there is now). In elm-ordeal, all tests are tasks, so they can be can synchronous or asynchronous, the package does not care.

Test

You can run the tests using yarn install && yarn test. Currently, the final result should be one timeout, one skipped and all other success.

Thanks

A big thank to @rtfeldman for creating node-test-runner which I took a lot of inspiration from.

License

This software is licensed under the Apache 2 license, quoted below.

Copyright Paul Dijou (http://pauldijou.fr).

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.