All Projects → bahmutov → cypress-angularjs-unit-test

bahmutov / cypress-angularjs-unit-test

Licence: other
Unit test Angularjs code using Cypress.io test runner

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to cypress-angularjs-unit-test

cypress-test-tiny
Tiny Cypress E2E test case
Stars: ✭ 48 (+108.7%)
Mutual labels:  test, cypress, cypress-io
cypress-example-docker-circle-workflows
Cypress + Docker + CircleCI Workflows = ❤️
Stars: ✭ 29 (+26.09%)
Mutual labels:  cypress, cypress-io
cypress-retry
Retry just the failed Cypress.io tests using Cypress module API and AST rewriting
Stars: ✭ 16 (-30.43%)
Mutual labels:  cypress, cypress-io
cypress-example-circleci-orb
Demo of using the Cypress CircleCI Orb
Stars: ✭ 26 (+13.04%)
Mutual labels:  cypress, cypress-io
cypress-hyperapp-unit-test
Unit test Hyperapp components using Cypress
Stars: ✭ 26 (+13.04%)
Mutual labels:  cypress, cypress-io
snapshot
Adds value / object / DOM element snapshot testing support to Cypress test runner
Stars: ✭ 114 (+395.65%)
Mutual labels:  cypress, cypress-io
UnitySettings
Runtime debugging menu (like setting on Android) for Unity.
Stars: ✭ 26 (+13.04%)
Mutual labels:  utility, test
Cypress
Fast, easy and reliable testing for anything that runs in a browser.
Stars: ✭ 35,145 (+152704.35%)
Mutual labels:  test, cypress
cypress-upload-file-post-form
Solution for two Cypress testing use-cases I came across with: perform a direct http FORM request to the server containing a file and other parameters and upload a file into a form before submission
Stars: ✭ 59 (+156.52%)
Mutual labels:  cypress, cypress-io
cypress-browserify-preprocessor
Cypress preprocessor for bundling JavaScript via browserify
Stars: ✭ 23 (+0%)
Mutual labels:  cypress, cypress-io
cypress-xpath
Adds XPath command to Cypress test runner
Stars: ✭ 145 (+530.43%)
Mutual labels:  cypress, cypress-io
instrument-cra
Little module for CRA applications to instrument code without ejecting react-scripts
Stars: ✭ 61 (+165.22%)
Mutual labels:  cypress, cypress-io
svelte-pwa-now
A PWA ready Svelte v3.0 starter template with Tailwind, Now integration and optional Typescript suppot
Stars: ✭ 138 (+500%)
Mutual labels:  cypress, cypress-io
cypress-maildev
Cypress Maildev is a bunch of Cypress commands in order to test your messages (SMS and Emails) by using Maildev REST API.
Stars: ✭ 19 (-17.39%)
Mutual labels:  test, cypress
Start Server And Test
Starts server, waits for URL, then runs test command; when the tests end, shuts down server
Stars: ✭ 879 (+3721.74%)
Mutual labels:  utility, test
TLE5012-Magnetic-Angle-Sensor
This repository includes an library for Arduino for the TLE5012 Magnetic Angle Sensor with SSC interface.
Stars: ✭ 37 (+60.87%)
Mutual labels:  cypress, cypress-io
cypress-mochawesome-reporter
Zero config Mochawesome reporter for Cypress with screenshots
Stars: ✭ 48 (+108.7%)
Mutual labels:  cypress, cypress-io
cypress-angular-unit-test
Trying to load and bootstrap Angular component dynamically inside Cypress
Stars: ✭ 146 (+534.78%)
Mutual labels:  cypress, cypress-io
laika
Log, test, intercept and modify Apollo Client's operations
Stars: ✭ 99 (+330.43%)
Mutual labels:  utility, test
cypress-get-it
Get elements by data attribute by creating a Cy command on the fly
Stars: ✭ 23 (+0%)
Mutual labels:  cypress, cypress-io

cypress-angularjs-unit-test BETA

Unit test Angularjs code using Cypress.io test runner

NPM

Build status semantic-release standard renovate-app badge

Motivation

You can use Cypress.io to end-to-end test any application, but what if you want to test your Angular.js values, services, controllers and components individually? This adaptor allows you to do this very quickly. See each test run as a mini app inside a real browser, go back in time using DOM snapshot, etc - all the good things available in E2E tests are working in unit tests.

Cypress screenshot

Install

Requires Node version 6 or above.

npm install --save cypress-angularjs-unit-test cypress

Requires angular peer dependency

Use

import {mount} from 'cypress-angularjs-unit-test'
// or const mount = require('cypress-angularjs-unit-test').mount
import angular from 'angular'
// prepare app
it('works', () => {
  const template = '... HTML template ... '
  const modules = ['module1', 'module2', '...']
  mount(template, modules)
})

Basic example

See cypress/integration/basic-spec.js

import {mount} from 'cypress-angularjs-unit-test'
import angular from 'angular'

angular.module('demo', [])
  .controller('WelcomeController', function($scope) {
    $scope.greeting = 'Welcome!';
    $scope.version = angular.version.full
  });

beforeEach(() => {
  // let's mount our "demo" module and its controller
  // in a "mini app" before each test
  const template = `
    <div ng-controller="WelcomeController">
      {{greeting}}
      ng {{version}}
    </div>
  `
  mount(template, ['demo'])
})

it('shows hello', () => {
  // "WelcomeController" should have replaced template
  // expression {{greeting}} with actual text
  cy.contains('div', 'Welcome!').should('be.visible')
})

Examples

Notes

  • npm run cy opens Cypress end-to-end test runner in GUI mode
  • npm test runs Cypress in headless mode
  • mount uses angular.bootstrap to mount code inside the test iframe.

Cypress can do everything you can do from DevTools console when dealing with Angular.js application.

Similar adaptors

Small print

Author: Gleb Bahmutov <[email protected]> © 2018

License: MIT - do anything with the code, but don't blame me if it does not work.

Support: if you find any problems with this module, email / tweet / open issue on Github

MIT License

Copyright (c) 2018 Gleb Bahmutov <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].