30 min | Cypress Demo | @Mike Taylor | ui-courses uses cypress and yakbak; are orthogonal yakbak: from flickr yakbak-proxy: runs tapes via a proxy to work around that annoying bit cypress: open in Jenkins, runs in headless mode BUT!! has screen caps for failed tests, and video mocha is the assertion library cy.* is analogous to nightmare.click, nightmare.wait, etc cypress is asserting lots of things behind the scenes "selector playground" can suggest use helpers: Cypress.Command.add to add helper function to cy* WRT documentation: "by some distance, the best ever"; active Gitter channel
see also: cypress' testing-library, a unit-testing companion to
|
30 min | BIgTest 1.0 | @John Coburn @Charles Lowell | BigTest 1 uses Karma installed deps, config file, tweak things, emphasis on succinct syntax: good selectors, easy to e.g. test versatility wins: real browsers, AND JSDom/Node mocking of backend is an orthogonal concern FS Runner, analogous to Cypress's agents for Chrome, Firefox, Safari can point at any URL you want, i.e. can function for e2e tests any browser that can load a URL can connect to BigTest as an agent
tests separated into tests/assertions tests move state of app forward assertions are pure, cannot change state borrows from Capybara interactor sits between DOM and user no more decorators; very functional composition of interactors gives good error messaging when things fail
interactor: defaultSelector is the "human readable" match
mutating steps/pure assertions is very powerful, leads to easy auto optimizations w/in suite mutating actions are always evaluated so never have stale refs TypeScript! So you get intellisense when writing interactors BT runs a proxy in between running service and test runner
BigTest 1 was really just a collection of tools with siloed data and therefore poor interactions among them BigTest 2: reason about entire test stack as a single state; NO SILOs very few deps ... but is all homegrown :/ partnered with Jonas Nicklas (capybara creator; https://twitter.com/jonicklas?lang=en) pillars of architecture data: all test result/assertion data available as graphql structured concurrency: cleanup correctly native agents: comm with browser via WebSockets
i.e. tests are represented as data in GraphQL
this is all OSS tests as data, not as scripts note: structure is an exported structure it's up to the agent to interpret the test so can layer on new syntax, b/c just maps onto a data structure
|