bitovi / funcunit

A functional test suite based on jQuery
https://funcunit.com/
MIT License
569 stars 379 forks source link

Make FuncUnit use async/await rather than a queue system #229

Open matthewp opened 5 years ago

matthewp commented 5 years ago

This is a future proposal that needs to be more fully thoroughly thought out.

justinbmeyer commented 5 years ago

I'd also like to throw in making it very functional.

import FuncUnit as F from "funcunit"

test(async function(){
  await F.click( querySelector("#button") )
  await F.textContent( querySelector("#details"), "Hi there" )
  assert(true, "text is hi there")
})

F would just expose functions that return promises. await use would be expected. We'd have functions that would be similar to what we have now, but more DOM-focused APIs and less jQuery-focused APIs:

I think we could get rid of many traversal methods. For example

await F.click( querySelector("#button") )
await F.textContent( querySelector("#details").parentNode , "Hi there" )
assert(true, "text is hi there")

Though we still might want some form of "wait" with traversal:

await F.click( querySelector("#button") )

details = await F.querySelector("#details")
child = await F.querySelector(child, ".someElement"); // obviously this could be done with one call
await F.textContent( child, "Hi there" )
assert(true, "text is hi there")