Moving from Jest + RTL to Cypress + @testing-library/cypress for testing React components
Answers to three common questions from people skeptical about Cypress.
My notes on testifying in person or in writing during a hearing.
Introducing cypress-vue-unit-test for better Vue component testing experience inside Cypress test runner.
Do not pay people to destroy the planet.
Comparing React components pixel by pixel to catch style problems
How to refactor loading JSON fixtures for simplicity
Moving from end-to-end to component and unit tests
A common mistake when using beforeEach hooks in Cypress specs
Use tests and automatic dependency updates to keep examples up to date with the latest versions of the relevant library. Make it visible with dependency version badges.
How to stub named imports during unit tests
How I see end-to-end and component and unit tests working together
How to prune unused Docker images, delete large node_modules, and clean old Cypress binaries
Configure Renovate too only check updates for some dependencies and not all of them.
Code samples of my common continuous integration configuration files for GitHub Actions, CircleCI
How to verify Sentry call happens on an unhandled exception
How to scrape static site from GitHub Action using Algolia.
How to test static sites three times before and after deployment to GitHub pages.
90-second pitch for CitizenClimateLobby I gave at PKG meeting at MIT.
How to bundle and transpile your NPM module to run on older Node versions.
How to never have a wrong link in your README and other Markdown files.
We have plenty of natural offshore wind and solar resources to satisfy all our electricity needs many times over. To say that we can’t switch to all green, all renewable, all safe electricity 50 years after we went to the Moon is a lie, and not a very convincing lie. Ban gas infrastructure now.
An email I have sent to my friends at the end of 2019.
I have painted the roof of my house white to keep cool in the summer
How to pass passwords and tokens during Cypress tests to avoid accidentally revealing them in screenshots, videos and logs
Step by step guide to using Sinon.js mocking library with Mocha.js test runner
Collection of my talks about Cypress.io from recent conferences with videos and direct links to slides.
Run Prettier inside a GitHub Action to fix code formatting, quick NPM install with caching inside actions, running end-to-end Cypress tests using custom action.
A way to test Cypress examples in Markdown files to guarantee their correctness.
Cambridge, MA council candidates who put climate as the number one priority issue.
How to bypass user interface to directly dispatch actions to Angular 8 application from Cypress end-to-end tests.
How to use Percy.io visual diffing service to prevent regressions in terminal programs.
How to test your site in a child window rather than iframe when using Cypress.
How to patch fix installed NPM module to avoid waiting for an official bug fix.
How to run accessability contrast test against a page to prevent low-contrast problem.
How to filter the collected Mocha unit tests before running them.
How to detect from Cypress test when a page reloads using object property assertions.
The planet is burning. What we must do immediately.
Electrical bicycle is a superb mobility device.
How to bypass user interface when writing end-to-end tests.
How to perform end-to-end API testing using Cypress test runner and take advantage of server logs.
How to capture console.log, console.error and even DEBUG=... logs.
How to test web application running on localhost using Cypress running inside a Docker container
How to validate SSR page using Cypress.io test runner
How to achieve 100% code coverage by combining end-to-end and unit tests without losing your sanity.
How to instrument code on the fly using Parcel bundler and collect code coverage during end-to-end tests.
How to configure TypeScript and Webpack path aliases to load application code from Cypress tests
How to instrument application code and collect code coverage during Cypress E2E tests.
How to stub navigator API methods from Cypress E2E test.
Drive-by testing www.chainsawsdirect.com using Cypress.io test runner.
How to share packaged NPM tgz module on GitHub.
How to write readable tests using custom commands and custom Chai assertions.
End-to-end testing a rendered pizza using Cypress.io test runner and image diffing Percy.io plugin.
End-to-end testing an SVG chart using Cypress.io test runner and image diffing Applitools plugin.
This blog post shows how to configure CircleCI to run Cypress in parallel mode for internal branches, while only use a single machine to run Cypress tests for external pull requests.
A few tips on how to use Zeit Now v2 serverless with TypeScript and a little bit of testing.
Step by step tutorial how to set up TypeScript support in Cypress using WebPack bundler.
Common mistakes to avoid when applying for a software job. Plus how to get a job if you have no relevant work experience yet.
Use any assertion inside "should(cb)" function to have Cypress auto-retry its command with your assertion function.
Use a separate environment variable name to avoid NPM tricking you.
How to test TodoMVC application that uses GraphQL.
How to use Maybe Monad to make your server middleware a little bit easier to reason about.
How to write a web application using a state machine and Hyperapp framework.
How to see which UI elements the end-to-end tests have interacted with.
How to require private NPM modules straight from GitHub without publishing them to NPM.
Create a React component using JSX and inject it into live application from a Cypress test.
How to mock GraphQL endpoints using Lunar from Cypress tests.
How to print from your Node programs in formats compatible with 3rd party logging tools.
How to wait for a slow-starting application to bootstrap before running end-to-end Cypress tests.
How to load balance multiple Cypress end-to-end tests in parallel mode, or group different tests together and in general control test runs in any way you want.
Should a person just starting in QA field learn how to use Cypress.io or Selenium.
How to quickly mock process.env during unit testing.
How Cypress, Zeit Now GitHub app and Renovate app play well together to give you well tested PRs and keep your dependencies up to date with zero effort.
Carriage return character, progress bar and progressive enhancement.
How to test Gatsby static blog locally, on Netlify before deploying, and after deployment using Circle.
How to run any Node code from your end-to-end Cypress tests using `cy.task` command.
How to bundle individual components using Rollup for each Cypress test
You can quickly write live interactive component documentation and make sure it works as expected by testing it.
Starting with GraphQL - from zero to hero.
Playing with remote Redis service for quick caching.
Using DOM snapshot to catch a disappearing element plus sharing application config.
How to ensure your stubs are not called with unexpected arguments.
Must have sections, badges, flow.
Flexible and powerful automatic dependency upgrades for NPM packages.
How to debug Mocha tests running in Node using Chrome DevTools inspector.
Use subfolders installed as NPM dependencies to avoid long relative paths in require.
A quick look at the new bundler.
You can shorted your state mutations by using functional lenses.
Adding support to script type=module while testing Hyperapp as ES6 module.
Step by step end-to-end testing project "array-explorer".
Testing dev server hot reload using Cypress.
Quickly stringing data transformation using standrd Ramda functions.
How to get IntelliSense help for your JSON files in modern IDEs.
Do not think every callbacks is sync or async.
How to execute multiple test tasks in parallel on CircleCI and TravisCI.
Writing E2E tests for Svelte.js app store using Cypress.
Small example of TodoMVC implemented using Vue.js and Vuex data store against REST backend.
How to make a very small Docker image with a Node application.
How to see a customized version of any website locally.
Notes from DevOps meetup panel on testing.
Using Mocha test context and its pitfalls.
Perform any action based on commits since last action.
A few examples of introducing functional programming into existing code.
Automatic period dependency update without much hassle.
Connecting Kliesli compositions or the advantages of good pipe insulation.
How I publish modules for older versions of Node.
How to deploy to GitHub pages from CI using SSH to authenticate.
Quickly run complex HTTP requests from terminal.
Incremental lint, Prettier, immutable rules.
Using functional lenses to modify objects by example.
Sometimes code refactoring removes need for advanced mocking in tests.
Do not mock your internal modules, mock system APIs instead!
Setting up a rock solid NPM module with semantic release in 30 seconds.
Randomize tests and run previously failed ones first for speed.
How a new VP should be judged.
Refactor code using functional approach (Maybe, immutable).
Use non-root user inside Docker container.
Collecting all inputs to each function to figure out missing test data.
Deriving Y Combinator that makes recursive functions without assignments possible.
A self-critique of my own code as a poster for the office.
Array or Observable - Ramda can do both!
Why would you want a function in a box?
How to distribute a tree-shaken library for your tree-shaken apps using Rollup.
How to ensure your Curl code snippets are working, plus generate documentation.
Use async / await in ServiceWorker code because browsers support both.
How to enforce a custom condition on a string.
How to use fallback with client-side routing to avoid 404 pages.
Replacement for testing pyramid.
How to patch a bug, use the fix in prod and submit the pull request in five minutes.
WebPack as a service for quick personal projects and examples.
Replacing the built-in OR and TERNARY operators with Maybe monads.
How I asked my coworkers to give me anonymous career advice.
When every function is pure, advanced async actions are easy.
Setting up and starting with TypeScript and Visual Studio Code editor.
A few examples of common mistakes when preparing presentation slides.
Tips and tricks for larger web apps.
A few ways ES6 removes boilerplate code.
How to do snapshot testing if the data frequently changes?
Writing tests should not be an afterthought.
My favorite semantic release plugins.
Framework-agnostic snapshot testing for Mocha, Jest, Vue, etc.
Call sites API does not support source maps, while exception stack does.
How to update the code comments during program execution.
Notes on small, simple off the shelf login solution for SPA and server.
Simple example showing automated client code change when module API changes.
Speed up resources by pushing them from a Node HTTP/2 server.
A few tips on getting the most out of E2E testing tool Cypress
A functor hides some piece of common imperative code (and makes it composable)
How exchanging a set of streams solves component communication.
How to send additional context for crashes that happen during E2E tests.
Imperative If/Else example implemented using Either monads and reactive style.
How to open custom protocol links from external applications in your Electron desktop app.
How to quickly find an error by bisecting the Git commit log.
How to use hashes for CDN resources.
How to run a database locally that syncs with central one.
4 Ops things that I am excited about today.
A screencast of ServiceWorker technology.
How to split a large pull request into several smaller ones.
How to setup semantic release on private GitLab and on-premises NPM registry.
Array, Promise and Maybe monads. Plus Docker is a functor.
Examples of useful functionality that can be used in Node without code changes.
FrontEndCamp NYC presentation about Cycle.js framework.
How to bundle a server including private modules and static files.
How to build multiple test bundles and run E2E test jobs in parallel.
How to roll over data when doing clean deploys using Zeit. Plus testing with Cypress!
Using NPM hooks and Zeit to send the semantic release notes to Slack.
How to set the semantic release tokens without going through the wizard.
Links to projects mentioned during BuzzJS presentation.
Small shortcut for using shell variable with default values in NPM scripts.
How to stop only if a specific expression becomes true.
Links to additional information included in my OSCON 2016 presentation.
A neat trick for making object property updates into a live event stream.
A short guide to using Cypress.io for feature testing web pages.
Links to additional information included in my CycleCond 2016 presentation.
The difficulty using Promises vs the simplicity using reactive streams
How is Cycle.js a pure framework if I can listen to the UI events and output new DOM?
Small functional tips for RxJS
How much code do you need to run Cycle.js program?
Common code snippets for using Pug (formerly Jade) template language.
Test function for purity using isolated v8 execution context.
Setting up multiple applications in a single DigitalOcean instance via Dokku.
Helpful AngularJS code snippets.
How to use semantic versioning with external services.
Verifying that a request to external service happens.
Shepherding Git commits from dev to stage to production.
The benefits of using ES6 parameter destructuring over options object pattern.
What to do if you want to compose multiple functions (hint - make them unary).
Node.js is really really really susceptible to code injection attacks.
How to make sure your Express or Koa server correctly sends crashes to exception monitoring service.
How I came up with idea and how I wrote wiseli
How to unit test Rx code on Node with Mocha (and Ava).
Deploying several microservices into the cloud with Tutum.
A single data structure holding program's state has a name - database.
Refactoring common auth flow from callbacks into Tasks.
Deploying website and microservice containers to production.
Building microservices with Fuge
Manage side effects when coding NodeJS servers with Rx and Cycle.js (NOT about server-side rendering).
How to write innovative, unusual and simply cool software.
Once you have a Promise instance the action has already started. Task instance does not run until someone calls .fork()
How to use ES6 and target older NodeJS platforms without mangling the code to the lowest common denominator
My build process that can precisely target any Nodejs environment using Rollup, ES6 Feature tests and Babel.
Single function modules, flat libraries and applications.
How to build and distribute libraries via NPM using WebPack bundler.
Three things I try to do as a senior engineer
An instantly loading, self-rewriting application using ServiceWorker - it is like server rendering inside your browser.
Generate the initial HTML markup from web app at build time to avoid blank screen.
Remove the empty page flicker on web application startup.
My collection of personal CLI apps to speed up NodeJS development.
How to pass logic instead of data in functional programming.
What useful ES6 features can we use right now?
How to use CircleCI to publish new versions of your NPM modules.
The most interesting presentations I have seen last month.
How to monkey patch a broken global Node package, if you have to.
How to measure size and publish smaller modules to NPM.
How to deploy your own server to receive real time crash data.
How to finish strong in any hackathon.
Modify the function's variables after the function executed.
Leave hooks in the AngularJS application to allow measuring how long individual actions take.
How to compute the filter's result asynchronously.
Remove unnecessary code while preserving the same code semantics.
How to wrap functions that depend on the environment for clean unit testing.
Eval is limited in its power plus the only time I found `this` variable useful.
How to preserve reference to data when factoring out model data to services.
Change live Angular application plus unit test private code from Node.
Building Angular application from CommonJS modules and powerful unit testing.
Changing a piece of imperative code to be purely functional
Introduction to Angular data model vs view update.
Instead of returning an error code or value, return a Promise.
Using and observing ExpressJS sessions from the client code.
Unit testing AngularJS code in record time using ng-describe.
Scope-based vs object-oriented controllers in Angular
How to load and use ES2015 in the Chrome DevTools console without any 3rd party extensions.
Building projects without having Grunt installed globally.
How to always load a 3rd party library in DevTools console
Use Mocha and the package script commands to quickly start unit testing CommonJS code.
Convert an asynchronous operation to promise-returning one.
Leave executable examples inside source files for future reference.
How to store multiple values in a promise chain using an object.
Companion notes to the "Self-improving software" presentation
How to design a simple to use and powerful library API.
Steps to develop good ExpressJS based application server.
Links and resources for learning ReactJS.
Publish tagged versions to NPM after successful CI build.
Scoring the cold recruiter pitches I received. Plus a few examples.
Avoid loading source files - put the code directly into the require cache.
How to embed and fetch version information for a specific Angular module.
What is wrong with Google Play? Is there anyone who listens to any music at that company?
Compromise functions private to closures via partially applied references.
Bind some properties in the options object.
Grab a subset of a complex object using functional-extract utility.
Optimizing "legoizer" web worker application to run 10 times faster.
Adding new features to an existing function via lifting.
Writing mock stdin text in your Nodejs unit tests.
Notes from a unique team productivity event.
Replace if conditions with functors and applicatives.
Create and destroy an Express.js server in each unit test.
Speed up Node.js application startup by caching require path resolutions.
How to avoid creeping lexical scope in asynchronous code.
How to unit test Node applications that use RethinkDB.
Small feature in RethinkDB data explorer that shows they get it.
Simplify middleware using higher-order functions.
How to embed the commit id in the Express application using Codeship and Heroku.
Infographic with the main stats on these three frameworks.
My presentation ideas, abstracts and cfps.
Load and run full AngularJS 1.x in browser's separate thread.
Run any function in a separate web worker thread using ng-webworker.
Speeding up Angular 1.x demo to be on par with React
How to remove boilerplate from intermediate steps using partial application or currying.
Trying a tiny Node / browser NoSQL database with a clean API.
How to reuse grunt tasks from gulp
Share data model via scopes and limit the view access via controllerAs syntax.
New features to use right after upgrading to Angular 1.3 from 1.2
Use RethinkDB hosted on Compose.io as a REST api data end point.
Initial local experiments with a modern NoSQL database.
Count a specific word in a text file using streams and reactive programming.
How to pass multiple values from one promise step to the next one without lexical scope or global variables.
Things we had to change in order to upgrade from Angular 1.2.26 to 1.3.14
Implementing every other array method using reduce.
How to use provider to allow user modules to configure 3rd party features.
Measuring generator vs promise performance.
Iterative, recursive, promise-returning factorial interview question.
Resources and links for learning about upcoming v2 AngularJS.
How to run ES6 (EcmaScript2015) code using 6to5 transpiler.
Please pick on API pattern and stick to it.
Good way to call the first promise-returning function.
A use case where point-free event callback does not work well.
Simple end to end testing via iframe API.
How I made a custom Google search across my github projects and blog posts.
Convert NodeJS EventEmitter emit to a promise-returning method.
How to determine if a dependency module was actually used?
Finish M tasks while running N asynchronous tasks at once using Q or ES6 Promises.
Use script tag attributes to pass config values.
How to find the first item after the second number in an array.
Profiling and speeding up a function using Chrome and v8-natives.
Ignoring some arguments and partial binding for methods calls.
Replace NodeJS require to add cache busting, pre- and post-processing, mocking, arguments.
Mocking responses using turtle-run, service-turtle and ng-wedge.
Summary of the AngularJS performance lessons learnt.
A common feature implemented in object-oriented and functional styles.
Find bottlenecks in live web application using Chrome DevTools code snippets.
Thunkifying is currying, argument reordering and middleware stacks.
User acceptance testing with code coverage information using was-tested.
You should use iterator methods for clarity and fewer side effects.
Proposal for The O'Reilly Software Architecture Conference 2015
Test live application by mocking responses without modifying code or installing plugins.
Which keys are expensive in a collection of objects?
Feeding fake variables to a function taken out of its lexical scope.
Plus easy promise chaining using Ramda.
Make a presentation about your life a couple of weeks after joining the company.
Measuring how close a library follows semver semantics when publishing new releases.
Implementing Todo list with Undo using immutable data structure.
Eliminate variables and functions via flexible selective application.
Functor + Applicative = Applier
Plot data right inside Chrome DevTools while debugging.
Semi-private data common to link and controller without adding to the scope.
Functor Promise together with Maybe applicative.
Test function for purity using lexical scope and runtime context.
Prepare for future async data flow by wrapping primitives in promises.
Limit dirty checking to the given scope when reacting to user events.
Check if your current module breaks other modules before publishing.
An experiment in offloading AngularJs dirty checking and model updates to a separate browser thread.
Profiling and speeding up AngularJs application step by step using Chrome DevTools code snippets
Run useful code fragments on-demand to analyze website performance.
$q.all(Array) and $q.all(Object) example
Changing filter function after async initialization.
See what each loaded Angular module provides and how it links to its dependencies.
Examples of unit testing Angular code from Node.
Prevent silent module overrides, misspelled directives, undefined expressions.
Loading and running simple Angular app under Node.
A function can configure itself via options argument to keep API clean and simple.
Selective argument binding using lodash, ramda and heroin
Methods one needs to call to make the unit tests work.
Reflecting on the first year of blogging about software development.
Avoid using `this` keyword in the API object revealed from a module.
Debugging unit tests run by Karma using Chrome DevTools.
Testing lazy async assertion by spying on objects.
Tag places in your private source code as good examples for others
If I had to design static source code analysis service
Iterating over objects using lodash functions.
Clear and easy to read defensive programming with check-types.js and check-more-types.js
Grunt plugins for tightening a project - linting, complexity, todos, etc.
Writing a functional adaptor makes a nice interview question.
Everyday Calculus, Discovering the hidden math all around us by Oscar E. Fernandez.
Run unit tests in production environment using lazy-test
An argument for trying Ramda if you love _
Exploring the marvelous materials that shape our man-made world
Easily test code in private closures using test-mole.
How to open source pieces of your software
A delicious feast of mathematical, geometrical and historical dishes.
Asynchronous processing using ES6 generators.
Promise chain looks like a railroad with two tracks.
Example refactoring a block of code containing OR condition
A small team can produce high quality software without exhaustive and long testing cycles.
Pick QUnit/gt if you need TDD, use Mocha if you want BDD, and Ava if preparing for the future.
We use assertions in our unit tests instead of built-in matchers.
Single method working as both getter and setter
Promise throttling and flatMapLatest equivalent
The power of mathematical thinking
Same simple problem solved in different programming styles.
Keeping the same load order of files and tests can lead to hidden bugs.
Keep dependecies up to date to get bug and performance fixes, not features.
Use lazy and helpful assertions instead of Jasmine matchers in the unit tests.
Another set of examples using generators.
Current level of ES6 in various tools.
Explanation of closures via lexical scope
One can easily apply too much or wrong type of curry.
Extend promises returned by $q with timeout method
You can quickly verify complex logic if you use structured JSON logging.
An example adding a flexible timeout method to promises
We can extend objects built from JSON strings by pointing to a different prototype object.
Make constructor functions work without "new" keyword in callbacks.
Combining functions into custom iterator callbacks and using _ will be easier if you put callback function first and data second.
Playing with ES6 generators in Node.
Flexible assertions without performance penalty.
Using Jade instead of HTML for AngularJS directives.
Access angular model and update DOM from the browser console.
Using providers to inject runtime values into modules.
Experiments with thread-local storage in Node.
How to avoid having to bind functions to contexts.
Finding the size of the memory allocated for the stack.
If a directive is recursive, you must use template url to avoid infinite loop.
A few useful applications of AngularJS parsing service.
Comparing 3rd party assertion libraries expect.js, should.js, etc.
Simplify on deman resource loading with promises.
How to bind any argument by name
Event-driven input/output makes for an efficient system for distributed computing.
Use .done() at the end of your Q promise chains to throw any unhandled exception.
Tiny library functional-pipeline composes functions in left to right order.
Great book, solid advice, focused on D3-specifics.
How to test promise-returning code.
Number of input data checks depends on the distance from the caller.
How to connect multiple promise-returning methods into single chain.
Angular library can be loaded under Node synthetic browser environment.
Stop hunting phantom problems due to name collisions.
Grunt tasks that accept default options or can be configured.
Search text files using grep and skip Node 3rd party folders.
How to spy on methods using sinon.js
Test D3 drawing code without running a browser for speed.
Making my own clone of the popular browser game.
Examples of using lodash, angular, check-types, ramda assertions
How to prevent hard to debug AngularJS injection errors due to minified code.
AngularJS relies on closures rather than modules, removing need to bind a context.
My HTML framework for simple drag and drop presentations from Markdown files.
Remove unit testing coverage from the collected data.
Create and use objects without any prototype.
Example Angular application fetching more data on scroll.
Catch all possible errors using both global and angular error hooks.
How to pass configuration into AngularJS during server-side template rendering.
How to connect promises into single sequence.
You can easily perform CLI end to end testing by checking the exit codes.
Effectively reading technical books by using agile epics.
Example refactoring a block of code containing AND condition
EcmaScript6 generator that does nothing
How to set and see git branch descriptions.
How to develop AngularJS applications in offline mode.
Handling the errors in the promise chain.
How to test Connect or Express middleware functions.
Great book for front end engineers and designers.
Send basic information with markup to generate low res page preview.
How to set Git and Grunt to always use same line ending character.
Log loaded files, add code coverage and extra features on the fly.
Developer is more valuable if his / her code does not have to be rewritten for a long time.
Extend simple feature with little functional decorators.
How to write AngularJS code inside server-side Jade templates.
Advanced examples removing promise boilerplate code.
How to avoid unnecessary promise boilerplate code.
Using single time estimate for a task leads to inaccurate plans.
Quick demos using AngularJS library Restangular and JSON file backend.
An example of a weird browser behavior traced back to the minification step.
Checking input arguments before doing any computation helps to quickly debug problems.
Excellent book, highly recommend to read.
Best book to read from the masters of NodeJS.
Using different linting settings depending on the code age
How I categorize every piece of knowledge about software development
Fun for kids, language mastery for adults.
Main steps when deploying NodeJS app using Heroku CLI tool.
A must read for anyone programming distributed systems that include the browser.
How to get many useful things from unit test coverage information.
How to get many useful things from unit tests
Large projects have lots of downsides, split them up.
Clean Code A Handbook of Agile Software Craftsmanship by Robert Martin.
unary, once, time, fluent and tap
Linting, CI, badges and pre-commit hooks for Node project.
iit, xit, ddescribe, xdescribe
How to run the async test suite setup.
Unit test suits with async setup functions.
Adapting signatures and preserving context in iterators.
Markdown is lightweight convention for text documents.
Excellent book on data and statistics.
Measuring and increasing number of jshint settings.
Subject your life to constant low levels of stress to prepare for unpredictable events.
Invest into new developers early to reap compounded returns.
Keep dependencies up to date using next-update
Split large projects into small modules.
Run extensive testing from clean environment before pushing code to remote repo.
Great book on remote working in software industry.
Who do I listen to when selecting or learning a technology.
Run unit tests on every commit using git hook.
See the project build status for all projects at once.
Add build status, version and dependency badges to your README.md
Quick API endpoint testing using several libraries.
Advice for developers moving from Windows to Mac OS X.
Quickly verify that necessary top level dependencies are installed.
Aliases simplify working with git commands
Detect some code problems using static analysis.