Spec for Intern-based UI functional tests
Blueprint ui-functional-tests-with-intern Change-Id: I97765176cd1a23f22e1e3c2ce8e1f3d452c5809f
This commit is contained in:
parent
9283cf4041
commit
63d9cca2dd
179
specs/7.0/ui-functional-tests-with-intern.rst
Normal file
179
specs/7.0/ui-functional-tests-with-intern.rst
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
====================================================
|
||||||
|
Introduce InternJS framework for UI functional tests
|
||||||
|
====================================================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/fuel/+spec/ui-functional-tests-with-intern
|
||||||
|
|
||||||
|
Fuel front-end should be covered with functional tests to avoid regression.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Functional tests for the front-end layer of Fuel are currently created with
|
||||||
|
CasperJS framework, while tests are run against headless browser phantomjs
|
||||||
|
as a part of CI procedure.
|
||||||
|
|
||||||
|
Developer that works on bug fix or creates a new feature supposed to cover
|
||||||
|
them with both unit and functional tests to avoid regression. The way
|
||||||
|
functional tests are created and maintained currently is complex since
|
||||||
|
CasperJS is not that flexible with the single-page web applications as
|
||||||
|
InternJS. In addition there is no way to run tests against browsers with
|
||||||
|
UI for debugging purposes.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Adopt InternJS as the primary testing framework for UI functional tests.
|
||||||
|
|
||||||
|
Test runner ``run_tests.sh`` should be updated correspondingly to utilize
|
||||||
|
Intern instead of Casper. Expected syntax:
|
||||||
|
|
||||||
|
* ``../run_tests.sh --ui-func`` - to run all tests
|
||||||
|
* ``../run_tests.sh -t static/tests/functional/test_welcome_page.js`` - to
|
||||||
|
run single test suite
|
||||||
|
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Upgrade impact
|
||||||
|
--------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
As soon Intern-based tests are run against Firefox browser it will take
|
||||||
|
additional time for CI to validate patchsets committed.
|
||||||
|
|
||||||
|
Plugin impact
|
||||||
|
-------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Front-end developers have to cover features and fixes they work on with
|
||||||
|
functional tests. These efforts should be taken into account while planning.
|
||||||
|
|
||||||
|
Infrastructure impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
CI workers should be able to run Firefox browser in order to execute
|
||||||
|
functional tests against it.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
|
||||||
|
* Nikolay Bogdanov (nbogdanov@mirantis.com)
|
||||||
|
|
||||||
|
Other contributors:
|
||||||
|
|
||||||
|
* Vitaly Kramskikh (vkramskikh@mirantis.com)
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Research the way how Intern tests should be created and organized
|
||||||
|
* Update test runner ``run_tests.sh`` to utilize InternJS for ui tests
|
||||||
|
* Make sure xvfb integration is set up, so it is possible to run
|
||||||
|
functional tests headlessly (like with CasperJS and phantomjs)
|
||||||
|
* Configure InternJS runner so it provides informative trace info
|
||||||
|
of tests execution
|
||||||
|
* Create initial helper library to cover the most frequent tasks (log
|
||||||
|
in, skip welcome page, create cluster, remove cluster)
|
||||||
|
* Create several tests as an example
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Acceptance criteria
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
* Functional tests for the UI are the part of the CI process and are executed
|
||||||
|
on every commit. Execution result affects build status
|
||||||
|
* InternJS runner is configured to utilize more informative reporter
|
||||||
|
* It is possible to start tests execution using xvfb to avoid browser window
|
||||||
|
popping up
|
||||||
|
* Helper library (page) that covers below use-cases is created:
|
||||||
|
|
||||||
|
* Log In
|
||||||
|
* Log Out
|
||||||
|
* Skip Welcome page
|
||||||
|
* Create Cluster
|
||||||
|
* Remove Cluster
|
||||||
|
* Add Cluster nodes
|
||||||
|
|
||||||
|
* The following pages (partially) covered with functional tests:
|
||||||
|
|
||||||
|
* Log In
|
||||||
|
* Welcome page
|
||||||
|
* Clusters page
|
||||||
|
* Cluster page
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
Documentation should be modified to remove mentions of CasperJS and its
|
||||||
|
installation prerequisites. Usage and installation of InternJS should
|
||||||
|
be described instead.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
* InternJS library - https://theintern.github.io
|
||||||
|
* ChaiJS assertion library - http://chaijs.com
|
||||||
|
* Leadfoot library for consistency with Selenium WebDriver API - https://theintern.github.io/leadfoot
|
||||||
|
* Spec for UI unit-tests - https://review.openstack.org/#/c/195666
|
Loading…
Reference in New Issue
Block a user