Integration tests for a React Native application running in the browser using Expo with network control, code coverage, visual, and a11y testing.
How Cypress test can stub a method defined with property descriptor configurable false
We can test a React Native application using Cypress end-to-end test runner while running it in the Web mode using Expo.
How to test a real-time Socket.io chat app by running two Cypress test runners concurrently.
How Cypress works under the hood, and how its architecture compares to other test runners.
How to write simple test for a real-time chat web application.
Using Chrome Debugger Protocol from Cypress
How to run the same test again and again to confirm it is flake-free
Various Git tips I learnt along the way
Little NPM secrets I learnt along the way
How to use Cypress to scrape the list of public presentations at slides.com
How to use cy.request, window.fetch, and cy.task commands to make HTTP requests to the server with and without cookies
How to access the MongoDB during Cypress API tests locally and on CircleCI
How to load or import fixtures to be used in the Cypress custom commands
How to stub the event analytics method window.track.
Measuring how fast esbuild bundles Cypress specs
How to stub the window.open method for every window
How to ensure the hydrated Next.js page does not suddenly change
The typical script names in package.json and how I run them
How to write a file preprocessor for bundling Cypress specs
How to visually compare a rendered Canvas with retry-ability
A collection of videos about writing cypress-recurse NPM module
How to confirm the browser sends POST request when you use anchor ping attribute.
How to test a site deployed to Netlify by starting a GitHub Actions workflow.
How to set up local HTML presentations using Reveal.js engine bundled by Vite.js
Prevent Test Runner hanging when the application uses confirmation dialog in window.onbeforeunload callback
Running the same Cypress tests with different browser time zones in parallel
How to run different GitHub workflows depending on the changed files
Test a site after deploying it to Netlify preview or production environment.
How to check if the form is valid before submitting it.
Avoid clashing global types between Cypress and Jest by using local-cypress library.
An example of splitting a GitHub Actions testing workflow into several jobs.
An investigation into a hanging application that required geolocation access during Cypress test.
How to test, transpile, and publish an NPM module with a custom Cypress command.
How to make sure the CI machines are not IO-limited when running Cypress tests in parallel on CircleCI machines
Because negative assertions can pass for the wrong reason.
How to cover the entire backend code using Cypress API tests.
A tutorial explaining how to write a custom Cypress command with retry-ability.
Split the long-running spec into smaller specs in a subfolder.
A few common cy.intercept gotchas and how to avoid them
How to see the individual command timings.
Renovate dependency upgrades become even better by showing the upgrade stats collected across all projects.
Repeat the same test and the entire project to find flakey tests
Do not use lax restore cache keys or your Cypress cache will blow up in size
When the failing test is the passing test
How to deploy versioned documentation site to GitHub Pages using GitHub Actions
Do not use lax restore cache keys or your cache will roll over with unused dependencies
Example guide to writing a simple Webpack loader
How to almost test Content-Security-Policy violations in your site using Cypress
How to load and test WASM code using Webpack and test it using Cypress
How to access the XState state machine from Cypress test to verify the current context, observe events, and drive the app via actions
The new command cy.route2 is everything one needs to spy and stub network requests from the application under test
How to spy on and stub GraphQL calls from the application using Cypress and its new cy.route2 API
How to wrap Cypress commands using its NPM module API to customize the test runner behavior.
How to test individual React components the same way as end-to-end web applications.
Generate web application tutorials using real Cypress tests.
Answers to three common questions from people skeptical about Cypress.
Introducing cypress-vue-unit-test for better Vue component testing experience inside Cypress test runner.
A common mistake when using beforeEach hooks in Cypress specs
How to stub named imports during unit tests
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 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.
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.
How to test your site in a child window rather than iframe when using Cypress.
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.
Electrical bicycle is a superb mobility device.
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.
Step by step tutorial how to set up TypeScript support in Cypress using WebPack bundler.
Use any assertion inside "should(cb)" function to have Cypress auto-retry its command with your assertion function.
How to test TodoMVC application that uses GraphQL.
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 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 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.
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.
How to get IntelliSense help for your JSON files in modern IDEs.
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.
Using Mocha test context and its pitfalls.
A few examples of introducing functional programming into existing code.
Connecting Kliesli compositions or the advantages of good pipe insulation.
Quickly run complex HTTP requests from terminal.
Incremental lint, Prettier, immutable rules.
Using functional lenses to modify objects by example.
Randomize tests and run previously failed ones first for speed.
Use non-root user inside Docker container.
Why would you want a function in a box?
How to distribute a tree-shaken library for your tree-shaken apps using Rollup.
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.
WebPack as a service for quick personal projects and examples.
Replacing the built-in OR and TERNARY operators with Maybe monads.
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.
Framework-agnostic snapshot testing for Mocha, Jest, Vue, etc.
Call sites API does not support source maps, while exception stack does.
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 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.
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.
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.
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.
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.
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 to unit test Rx code on Node with Mocha (and Ava).
Deploying several microservices into the cloud with Tutum.
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).
Once you have a Promise instance the action has already started. Task instance does not run until someone calls .fork()
How to build and distribute libraries via NPM using WebPack bundler.
My collection of personal CLI apps to speed up NodeJS development.
What useful ES6 features can we use right now?
How to use CircleCI to publish new versions of your NPM modules.
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.
Modify the function's variables after the function executed.
How to compute the filter's result asynchronously.
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.
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.
How to store multiple values in a promise chain using an object.
Companion notes to the "Self-improving software" presentation
Steps to develop good ExpressJS based application server.
Links and resources for learning ReactJS.
Publish tagged versions to NPM after successful CI build.
Avoid loading source files - put the code directly into the require cache.
How to embed and fetch version information for a specific Angular module.
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.
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.
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.
How to find the first item after the second number in an array.
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.
A common feature implemented in object-oriented and functional styles.
Find bottlenecks in live web application using Chrome DevTools code snippets.
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.
Implementing Todo list with Undo using immutable data structure.
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.
An experiment in offloading AngularJs dirty checking and model updates to a separate browser thread.
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.
Selective argument binding using lodash, ramda and heroin
Methods one needs to call to make the unit tests work.
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.
Iterating over objects using lodash functions.
Clear and easy to read defensive programming with check-types.js and check-more-types.js
An argument for trying Ramda if you love _
Asynchronous processing using ES6 generators.
Promise chain looks like a railroad with two tracks.
Pick QUnit/gt if you need TDD, use Mocha if you want BDD, and Ava if preparing for the future.
Single method working as both getter and setter
Promise throttling and flatMapLatest equivalent
Another set of examples using generators.
Current level of ES6 in various tools.
Explanation of closures via lexical scope
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.
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.
How to test promise-returning code.
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.
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.
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.
Example refactoring a block of code containing AND condition
EcmaScript6 generator that does nothing
How to set and see git branch descriptions.
Handling the errors in the promise chain.
How to test Connect or Express middleware functions.
Log loaded files, add code coverage and extra features on the fly.
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.
Quick demos using AngularJS library Restangular and JSON file backend.
Main steps when deploying NodeJS app using Heroku CLI tool.
unary, once, time, fluent and tap
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.
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.
Aliases simplify working with git commands
Detect some code problems using static analysis.