Date 11 Aug 2020
Attendees Goals Review Cypress and BigTest 1.0 (new version) Recording https://web.microsoftstream.com/video/4211cf42-d633-48d1-babb-e247cae67088
or
https://drive.google.com/file/d/196Qk5GJPMCK0UtBeH0ohW-14kHP8LE7n/view?usp=sharing
Discussion items Time Item Who Notes 30 min Cypress Demo 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 BigTest 1 uses KarmaBigTest 2 has replaced Karma with their own runner 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 concernfunctions similar to cypress: backend is a blackbox FS Runner, analogous to Cypress's agents for Chrome, Firefox, Safarican 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/assertionstests move state of app forward assertions are pure, cannot change statelessons both in usage and expression borrows from Capybarainteractor 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" matchBUT can use any kind of match, e.g. name, id, aria-label etc 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 SILOsvery few deps ... but is all homegrown :/ partnered with Jonas Nicklas (capybara creator; https://twitter.com/jonicklas?lang=en ) pillars of architecturedata: 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 GraphQLrepresenting assertion as a piece of data is very powerfulcan get stack trace, detailed information can write agent in this is all OSS tests as data, not as scriptsnote: 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 structuree.g. cuke syntax is on the way because can just map Gherkin onto BT structure
Action items