pgadmin4/web/regression
George Gelashvili 19be3529f8 Create a template loader for SQL templates.
This will automatically find the correct version of a template for the server version, and allows us to remove templates that were previously duplicated for different server versions.

Patch by George & Tira at Pivotal. Review by me and Murtuza from EDB.

Discussion: https://www.postgresql.org/message-id/flat/CAHowoHaU9_pkCt%2B1g8dpY3hsXXZmsJZiJH-3-_Hd%2BC1MxiGhtA%40mail.gmail.com#CAHowoHaU9_pkCt+1g8dpY3hsXXZmsJZiJH-3-_Hd+C1MxiGhtA@mail.gmail.com
2017-01-30 11:25:03 +00:00
..
utils Create a template loader for SQL templates. 2017-01-30 11:25:03 +00:00
.gitignore Add runtime/pgAdmin4 to .gitignore, and re-order entries for ease of maintenance. 2017-01-16 14:46:44 +00:00
README Ensure that the directory paths are as they should be under the runtime. Note that this change requires (for now) the regression tests to be run from the web/regression directory. 2016-09-26 16:38:27 +01:00
__init__.py Update copyright notices for 2017. 2017-01-04 13:33:32 +00:00
runtests.py Various improvements to the regression tests, notably avoiding use of signals unavailable on Windows. 2017-01-08 18:48:04 +05:30
test_advanced_config.json.in Introduce a test config database for the regression tests, and track/remove objects that are created during testing. 2016-09-14 16:26:12 +01:00
test_config.json.in Allow test servers to be enabled or disabled easily in the config 2016-10-15 08:44:40 -07:00
test_setup.py Update copyright notices for 2017. 2017-01-04 13:33:32 +00:00
test_utils.py Python 3 fix for the regression tests 2017-01-20 15:29:57 +00:00

README

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 single node at a time

     Example 1) Run test framework for 'browser' node
     run 'python runtests.py --pkg browser'

     Example 2) Run test framework for 'database' node
     run 'python runtests.py --pkg browser.server_groups.servers.databases'