pgadmin4/web/regression/README
Atira Odhner b6486f3d42 Test suite runner enhancements:
To chase down a set of tests that were failing together, we wanted to run
deeper trees of tests. We changed the behavior of the --pkg argument to
runtests.py so it runs tests under a package and its subpackages, instead
of for a single node.

It gave us more flexibility in what tests to run. This also includes the
--exclude option.

To run tests for a single node, ".tests" can be appended to the package path.

Tira & George.
2017-02-15 15:10:31 +00:00

141 lines
4.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

pgAdmin 4 Test Framework
========================
This regression framework is designed to execute unit tests for all modules to
help catch regressions in the code.
Assumptions
-----------
- pgAdmin must have SMTP configured if SERVER_MODE == True.
- There should be a single server group present in the browser.
- Currently each module will have testcases related to ONLY GET, POST, PUT,
and DELETE apis.
General Information
-------------------
1) The required test cases should be placed under the /tests directory of the
respective module.
- 'pgadmin/browser/tests' directory contains test-cases for following
modules:
1. Login Page
2. Reset Password Page
3. Change Password Page
4. Logout Page
- 'pgAdmin4/web/pgadmin/browser/server_groups/tests/' shows an example of
tree traversal of the pgAdmin modules and how the test folder is required
for each individual module.
- 'pgadmin/browser/server_groups/servers/tests/' directory will have separate
file for each test-case:
1. test_server_add.py
2. test_server_delete.py
3. test_server_get.py
4. test_server_update.py
2) The pgAdmin4 source tree includes 2 different configuration file templates.
One file template for the server configuration
named test_config.json.in' and another for test configuration named
'test_advanced_config.json.in' in the pgAdmin4/web/regression directory.
After completing the pgAdmin4 configuration, you must make a working copy of
the templates called test_config.json and test_advance_config.json
before modifying the file contents.
2a) The following command copies the test_config.json.in file, creating a
configuration file named test_config.json (same way user can copy
test_advance_config.json.in file into test_advance_config.json)
$ cp pgadmin4/web/regression/test_config.json.in \
pgadmin4/web/regression/test_config.json
2b) After creating the server and test configuration file, add (or modify)
parameter values as per requirements. The pgAdmin4 regression framework expects
to find the files in the directory '/<installation dir>/web/regression/'.
If you move the file to another location, you must create a symbolic
link that specifies the new location.
2c) Specifying Server Configuration file:
Server details and connection properties as per their local setup. The
test_config file is in JSON format and property values are
case-sensitive.
2d) Specifying the Test Configuration file:
The user can add/change test data as per their need. The
test_advanced_config file is in JSON format and property values are
case-sensitive.
Test Data Details
-----------------
"pgAdmin4 Login Credentials" (used to login to pgAdmin):
login_username = login id
login_password = login password
new_password = new login password
"pgAdmin4 Test User Credentials" (dummy user used for testing user management):
login_username = login id
login_password = login password
new_password = new login password
"server_credentials":
name = Server/database Name
db_username = Database Username
host = IP Address of Server
db_password = Database Password
db_port = Database Port
maintenance_db = Maintenance Database
sslmode = SSL Mode
comment = Any Comments to add
tablespace_path = A path under which a tablespace can be created
Execution:
-----------
- The test framework is modular and pluggable and dynamically locates tests
for modules which are discovered at runtime. All test cases are found
and registered automatically by its module name in
'pgadmin4/web/pgadmin/utils/test.py' file.
- Change to the regression test directory:
run 'cd web/regression'
- Execute the test framework for all nodes
run 'python runtests.py --pkg all' or just:
'python runtests.py'
- Execute test framework for entire package
Example 1) Run test framework for 'browser' package
run 'python runtests.py --pkg browser'
Example 2) Run test framework for 'database' package
run 'python runtests.py --pkg browser.server_groups.servers.databases'
- Execute test framework for single node at a time
Example 1) Run test framework for 'browser' node
run 'python runtests.py --pkg browser.tests'
Example 2) Run test framework for 'database' node
run 'python runtests.py --pkg browser.server_groups.servers.databases.tests'
- Exclude a package and its subpackages when running tests:
Example: exclude acceptance tests but run all others:
run 'python runtests.py --exclude acceptance'
Example: exclude multiple packages:
run 'python runtests.py --exclude browser.server_groups.servers.databases,browser.server_groups.servers.tablespaces'