зеркало из https://github.com/mozilla/ff-tool.git
205 строки
4.5 KiB
ReStructuredText
205 строки
4.5 KiB
ReStructuredText
=======
|
||
ff-tool
|
||
=======
|
||
|
||
|Build Status|
|
||
|
||
.. |Build Status| image:: https://travis-ci.org/rpappalax/ff-tool.svg?branch=dev
|
||
:target: https://travis-ci.org/rpappalax/ff-tool
|
||
|
||
.. contents::
|
||
|
||
Summary
|
||
=======
|
||
|
||
ff-tool is a Python CLI tool we’ve created to facilitate browser testing
|
||
of cloud services. It is largely a convenience wrapper we’ve written
|
||
around these amazing tools/libraries (see note below):
|
||
|
||
- `mozdownload <https://github.com/mozilla/mozdownload>`_
|
||
- `mozprofile <https://github.com/mozilla/mozprofile>`_
|
||
|
||
Our typical use case is launching various Firefox browser versions with
|
||
a fresh profile and loading custom preferences. This tool enables us to
|
||
do this quickly with a 1-liner from the CLI.
|
||
|
||
Features
|
||
========
|
||
|
||
1. DownloadFirefox desktop versions (Nightly, Developer Edition, Beta,
|
||
Release)
|
||
2. Manage profiles
|
||
3. Load test preferences
|
||
|
||
Notes
|
||
=====
|
||
|
||
If you plan on creating a tool of your own, please import the above lib
|
||
directly in your script(s). This tool was designed for convenience of
|
||
our team for testing Cloud Services and not intended to be used as a
|
||
library.
|
||
|
||
Profiles are stored in a temp directory by default which can be
|
||
overridden. Use caution if you specify your own profile directory as
|
||
profile cleanup functions can wipe out all profiles in your specified
|
||
directory.
|
||
|
||
**NOTE:**
|
||
|
||
This tool is work in progress… USE AT YOUR OWN RISK!
|
||
|
||
Installation
|
||
============
|
||
|
||
**Pre-requisites**
|
||
|
||
- Python >= 2.7 and virtualenv (Python 3 not yet supported)
|
||
|
||
**Windows Users**
|
||
|
||
- ff-tool will work on Windows, but requires quite a bit of setup.
|
||
- Also, installation behavior for the Firefox binary is different than
|
||
for other OSes. In particular, ff-tool installs the Firefox binaries
|
||
into a “\_temp” directory for all OSes (except Windows) to avoid
|
||
clobbering your working browser. Unfortunately, the Windows installer
|
||
forces installation into C:\\Program Files. Since both the release
|
||
and Beta versions of Firefox install into the same place, you also
|
||
run the risk of installing one over another.
|
||
- Again, use at your own risk!
|
||
|
||
**Windows: Installing Cygwin**
|
||
|
||
- Download and install: `Cygwin <https://cygwin.com/>`_
|
||
- Right click on: c:\\cygwin64\\cygwin.bat
|
||
- Run as administrator or you will suffer.
|
||
- A number of dependencies must also be installed including: gcc, make,
|
||
curl, pycrypto, python2, python-dev, etc.
|
||
|
||
**Build**
|
||
|
||
::
|
||
|
||
$ make build
|
||
$ source ./venv/bin/activate
|
||
|
||
**Cleanup**
|
||
|
||
::
|
||
|
||
$ deactivate
|
||
$ make clean
|
||
|
||
Run
|
||
===
|
||
|
||
*When not specified, ff will use defaults*
|
||
|
||
Help
|
||
====
|
||
|
||
::
|
||
|
||
$ ff -h
|
||
|
||
Launch browser, clean profile
|
||
=============================
|
||
|
||
- version: Nightly
|
||
- profile\_name:
|
||
|
||
::
|
||
|
||
$ ff
|
||
|
||
- version: Developer Edition (aurora)
|
||
- profile\_name:
|
||
|
||
::
|
||
|
||
$ ff -c aurora
|
||
|
||
Launch browser, clean profile, specify profile name
|
||
===================================================
|
||
|
||
- version: Nightly
|
||
- profile\_name: my\_cool\_profile1
|
||
|
||
**NOTE:** If the specified profile exists, we use it, if not we create a
|
||
new one with that name.
|
||
|
||
::
|
||
|
||
$ ff -p my_cool_profile1
|
||
|
||
|
||
Custom Browser Prefs
|
||
====================
|
||
|
||
Firefox provides the ability for a user to change preferences in
|
||
about:config. For testing and automation this can be cumbersome as it
|
||
usually involves many small steps.
|
||
|
||
As alternative, ff-tool provides a means for loading these prefs from a
|
||
root directory you specify via an environment variable.
|
||
|
||
Example:
|
||
|
||
::
|
||
|
||
$ export PREFS_ROOT_DIR = '../services-test'
|
||
|
||
Custom prefs must be stored in the following directory/file structure:
|
||
|
||
You must also include a prefs.ini file which specifies the
|
||
environment(s) in which each pref set is used.
|
||
|
||
Example prefs.ini:
|
||
|
||
::
|
||
|
||
[DEFAULT]
|
||
pref_key = pref_value
|
||
|
||
[dev]
|
||
pref_key = pref_value
|
||
|
||
[stage]
|
||
pref_key = pref_value
|
||
|
||
|
||
Cloud Services (only)
|
||
=====================
|
||
|
||
Launch browser, clean profile, specify services-specific options...
|
||
-------------------------------------------------------------------
|
||
|
||
- version: Beta
|
||
- profile\_name: my\_cool\_profile1
|
||
- product: loop-server
|
||
- environment: stage
|
||
- test-type: e2e-test
|
||
|
||
**NOTE:** If the specified profile exists, we use it, if not we create a
|
||
new one with that name.
|
||
|
||
::
|
||
|
||
$ ff -c beta -p my_cool_profile1 -a loop-server -e stage -t e2e-test
|
||
|
||
Download all browsers, but don't create a profile or launch any browsers...
|
||
---------------------------------------------------------------------------
|
||
|
||
**NOTE:** This is useful for our daily refresh task where we make sure
|
||
we have the latest browsers installed.
|
||
|
||
- version: all
|
||
- profile\_name: none
|
||
|
||
::
|
||
|
||
$ ff -c ALL --install-only
|
||
|
||
|
||
|
||
|