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 api’s. 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 '//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'