From bcd4ef2e85ef89affba31ea3646eaffe8ca2890f Mon Sep 17 00:00:00 2001 From: "Luke \"Jared\" Bennett" <lbennett@gitlab.com> Date: Wed, 17 May 2017 18:21:52 +0000 Subject: [PATCH] Update fe_guide testing.md --- .../fe_guide/img/testing_triangle.png | Bin 0 -> 11836 bytes doc/development/fe_guide/testing.md | 39 ++++++++++++++---- 2 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 doc/development/fe_guide/img/testing_triangle.png diff --git a/doc/development/fe_guide/img/testing_triangle.png b/doc/development/fe_guide/img/testing_triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..7a9a848c2eec8a8bb37a751cef187844998ff12a GIT binary patch literal 11836 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 literal 0 HcmV?d00001 diff --git a/doc/development/fe_guide/testing.md b/doc/development/fe_guide/testing.md index a8c264bbd3c..5852cac2aa5 100644 --- a/doc/development/fe_guide/testing.md +++ b/doc/development/fe_guide/testing.md @@ -1,11 +1,20 @@ # Frontend Testing -There are two types of tests you'll encounter while developing frontend code -at GitLab. We use Karma and Jasmine for JavaScript unit testing, and RSpec -feature tests with Capybara for integration testing. +There are two types of test suites you'll encounter while developing frontend code +at GitLab. We use Karma and Jasmine for JavaScript unit and integration testing, and RSpec +feature tests with Capybara for e2e (end-to-end) integration testing. -Feature tests need to be written for all new features. Regression tests ought -to be written for all bug fixes to prevent them from recurring in the future. +Unit and feature tests need to be written for all new features. +Most of the time, you should use rspec for your feature tests. +There are cases where the behaviour you are testing is not worth the time spent running the full application, +for example, if you are testing styling, animation or small actions that don't involve the backend, +you should write an integration test using Jasmine. + + + +_This diagram demonstrates the relative priority of each test type we use_ + +Regression tests should be written for bug fixes to prevent them from recurring in the future. See [the Testing Standards and Style Guidelines](../testing.md) for more information on general testing practices at GitLab. @@ -13,10 +22,12 @@ for more information on general testing practices at GitLab. ## Karma test suite GitLab uses the [Karma][karma] test runner with [Jasmine][jasmine] as its test -framework for our JavaScript unit tests. For tests that rely on DOM -manipulation, we generate HTML files using RSpec suites (see `spec/javascripts/fixtures/*.rb` for examples). +framework for our JavaScript unit and integration tests. For integration tests, +we generate HTML files using RSpec (see `spec/javascripts/fixtures/*.rb` for examples). Some fixtures are still HAML templates that are translated to HTML files using the same mechanism (see `static_fixtures.rb`). -Those will be migrated over time. +Adding these static fixtures should be avoided as they are harder to keep up to date with real views. +The existing static fixtures will be migrated over time. +Please see [gitlab-org/gitlab-ce#24753](https://gitlab.com/gitlab-org/gitlab-ce/issues/24753) to track our progress. Fixtures are served during testing by the [jasmine-jquery][jasmine-jquery] plugin. JavaScript tests live in `spec/javascripts/`, matching the folder structure @@ -28,7 +39,9 @@ browser and you will not have access to certain APIs, such as [`Notification`](https://developer.mozilla.org/en-US/docs/Web/API/notification), which will have to be stubbed. -### Writing tests +### Best practice + +#### Naming unit tests When writing describe test blocks to test specific functions/methods, please use the method name as the describe block name. @@ -56,6 +69,14 @@ describe('.methodName', () => { }); ``` +#### Stubbing + +For unit tests, you should stub methods that are unrelated to the current unit you are testing. +If you need to use a prototype method, instantiate an instance of the class and call it there instead of mocking the instance completely. + +For integration tests, you should stub methods that will effect the stability of the test if they +execute their original behaviour. i.e. Network requests. + ### Vue.js unit tests See this [section][vue-test]. -- GitLab