Auto-tools/Projects/CrossWeave/Test Format
The test files used by CrossWeave are all written in JSON; these drive the test. There is no scripting required to create test cases.
The general format of a CrossWeave test is as follows, shown without the JSON formatting characters:
setup profiles: [profile1, profile2, ..., profile-n] asset-list-1 ... asset-list-n phase-1: profile: profile1 actions: [action1, action2, ..., action-n] phase-2: profile: profile2 actions: [action1, action2, ..., action-n] ... phase-n: profile: profile1 actions: [action1, action2, ..., action-n]
The Setup Block
The setup block just lists the profiles that will be used during the test. CrossWeave creates these profiles before Firefox is launched. The profiles can be given any names. A complete setup block might look like:
"setup": { "profiles": ["profile1", "profileGesundheit"] },
Asset Lists
A test file will contain one or more asset lists, which are lists of bookmarks, passwords, or other types of browser data that are relevant to Weave. The format of these asset lists vary depending on asset type, and are explained in detail at these links:
As a simple example, without explaining the format, a short list of bookmarks might look like this:
"bookmark-list-1": { "menu": [ { "uri": "http://www.apple.com/iphone/", "title": "iPhone" }, { "uri": "http://bugzilla.mozilla.org/show_bug.cgi?id=%s", "title": "Bugzilla", "keyword": "bugzilla" }, { "separator": true }, { "uri": "http://www.mozilla.com" } ] },
Phase Blocks
The phase blocks are where the action happens! They tell CrossWeave what to do. Each phase block contains the name of a profile, and a list of actions. CrossWeave iterates through the phase blocks in alphanumeric order, and for each phase, it does the following:
- Launches Firefox with the specified profile
- Performs the specified actions
- Determines if the phase passed or failed; if it passed, it continues to the next phase block and repeats the process
Let's look at a simple phase block:
"phase1": { "profile": "profile1", "actions": [ { "add": { "bookmarks": "bookmark-list-1" }, { "sync": "all", "wipe-server": true } ] },
This will cause CrossWeave to launch Firefox with the profile 'profile1', add all the bookmarks specified in 'bookmark-list-1', then do a full sync to Weave with the "wipeServer" setting, which causes any existing data for the Weave account being used to be wiped, before data from the local client is synced to it.
This should have the effect of syncing all the bookmarks we just added to our Weave account. We could test this using a second phase:
"phase2": { "profile": "profile2", "actions": [ { "sync": "all" }, { "verify": { "bookmarks": "bookmark-list-1" } ] },
This will cause CrossWeave to launch Firefox with a different profile, which knows nothing about the bookmarks we added to profile1. It syncs with Weave, which should pull all of our bookmarks to the local client. It then verifies that all the bookmarks in 'bookmark-list-1' are indeed present.