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.
+
+![Testing priority triangle](img/testing_triangle.png)
+
+_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