I have a Mozilla Firefox addon and I want to test it. I found Mozmill and wrote a small Python script that simply takes each version of Firefox and runs the command as follows:
mozmill
Here is the script unit_test_runner_public.py:
from subprocess import check_output
import time
firefox_binary_path = 'C:\\browsers\\firefox\\'
ff_addon_location = 'C:\\my_ext\\ext'
tests_folder = 'C:\\my_ext\\tests\\mozmill\\'
ff_versions = ['38.0.1', '37.0.2', '36.0.4', '35.0.1', '34.0.5', '33.1.1',
'32.0.3', '31.0', '30.0', '29.0.1', '28.0', '27.0.1', '26.0',
'25.0.1', '24.0', '23.0.1', '22.0', '21.0', '20.0.1', '19.0.2',
'18.0.2', '17.0.1', '16.0.2', '15.0.1', '14.0.1', '13.0.1']
def build_ff_path(ff_version):
return "%s%s%s" % (firefox_binary_path, ff_version, "\\firefox.exe")
for item in ff_versions:
print "##### Started unit tests for Mozilla Firefox %s #####" % item
current_run = "mozmill --binary=%s --addon=%s --test=%s" % \
(build_ff_path(item), ff_addon_location, tests_folder)
test_run_result = check_output(current_run, shell=True)
print "##### Finished unit tests for Mozilla Firefox %s #####" % item
time.sleep(10)
So, Mozmill launches the browser, runs the tests, and then closes the browser and does this for each version of Firefox from 38.0.1 to 13.0.1
The problem is that almost every time it hangs on some random version of Firefox. Thus, it opens a browser instance, runs the tests, but then it does not close the browser, and the Firefox window freezes for a while, and then I see such an exception in the terminal:
mozversion INFO | application_buildid: 20120905151427
mozversion INFO | application_changeset: 0b774a1067fe
mozversion INFO | application_display_name: Firefox
mozversion INFO | application_id: {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
mozversion INFO | application_name: Firefox
mozversion INFO | application_repository: http://hg.mozilla.org/releases/mozilla
-release
mozversion INFO | application_vendor: Mozilla
mozversion INFO | application_version: 15.0.1
mozversion INFO | platform_buildid: 20120905151427
mozversion INFO | platform_changeset: 0b774a1067fe
mozversion INFO | platform_repository: http://hg.mozilla.org/releases/mozilla-re
lease
mozversion INFO | platform_version: 15.0.1
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\mozmill\__init__.py", line 878, in run
mozmill.run(tests, self.options.restart)
File "C:\Python27\lib\site-packages\mozmill\__init__.py", line 473, in run
self.stop_runner()
File "C:\Python27\lib\site-packages\mozmill\__init__.py", line 595, in stop_ru
nner
raise Exception('client process shutdown unsuccessful')
Exception: client process shutdown unsuccessful
Traceback (most recent call last):
File "unit_test_runner_public.py", line 24, in <module>
test_run_result = check_output(current_run, shell=True)
File "C:\Python27\lib\subprocess.py", line 573, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'mozmill --binary=C:\browsers\firefox\15.
0.1\firefox.exe --addon=C:\my_ext\ext --test=C:\my_ext\tests\mozmill\' returned
non-zero exit status 1
C:\my_ext>
, Firefox, , Firefox.
:
- : Microsoft Windows 7 Enterprise SP1 x86
- Python: 2.7.9
- Mozmill: 2.0.10
pip:
blessings (1.6)
jsbridge (3.0.3)
ManifestDestiny (0.5.7)
manifestparser (1.1)
mozcrash (0.14)
mozdevice (0.45)
mozfile (1.1)
mozinfo (0.7)
mozlog (2.11)
mozmill (2.0.10)
moznetwork (0.24)
mozprocess (0.22)
mozprofile (0.23)
mozrunner (5.35)
mozversion (1.0)
pip (1.5.6)
setuptools (7.0)
- ?