Added /tests/util directory with login/logout scripts.
[mediagoblin-automation:mediagoblin-selenium.git] / docs / ContributingTests.txt
1 ------------------------
2 How to Contribute Tests
3 ------------------------
4 Tests can be recorded using Selenium IDE within Firefox or by generating the 
5 HTML either programmatically or by hand. Theses tests are then to be added
6 to the TestSuite.html under tests/src. 
7
8 The current workflow then requires that you export your test case as a 
9 "Python 2 webdriver" script and save it in the tests/ folder. In the future
10 this conversion will be done by the automation framework itself so only the
11 HTML source file will need to be committed.
12
13 ------------------------
14 Things to Note
15 ------------------------
16 Don't set your base url to have a forward slash at the end. Selenium adds the forward
17 slash for you by default.
18
19 ------------------------
20 Writing Upload Tests
21 ------------------------
22 If a test makes use of local files, such as those found under the resources 
23 directory, youneed to edit the Selenium HTML file and replace the your specific
24 base directory path with the parameter WORKING_DIRECTORY.
25
26 Example:
27 /home/lotusecho/gmg/mediagoblin-selenium/resources/gavroche.png
28
29 Becomes
30
31 WORKING_DIRECTORY/resources/gavroche.png
32
33 When runtests.sh is run it will process that paramter and replace it with your 
34 current working directory.
35
36 ------------------------
37 When Recording / Code Reuse
38 ------------------------
39 At /tests/util we have provided a small set of often-used functions that can be
40 added to your test cases to reduce the amount of repeated work.
41
42 When you record your tests you don't need to record the login/logout steps as 
43 a part of test. Instead, add them to the exported python file. 
44
45 ------------------------
46 util.login EXAMPLE
47 ------------------------
48 Add this ->         from util import login, logout
49 Right before ->     from selenium import webdriver
50
51 ...
52
53 Next, find your test function, like the following:
54
55     def test_upload_j_p_e_g(self):
56         driver = self.driver
57         #Insert your objects here for login
58         data = {"username" : "testuser", "password" : "TestPassworD!"}
59         tLogin = login.LogIn()
60         tLogin.log_in(self, data)
61         #End of new code
62
63
64 Each reusable object takes data from your current test to proceed.