|
|
(25 intermediate revisions by 6 users not shown) |
Line 1: |
Line 1: |
| {{Draft}}
| | Mozmill 2 will be the next major release with a mostly complete refactored code base for both Python and Javascript code. It will be shipped with a ton of new features and more reliable and safer code paths. |
|
| |
|
| These are some preliminary thoughts for Mozmill 2.0. Feel free to add your ideas below. Feel free to add your ideas to the "whiteboard" section, and in the [https://wiki.mozilla.org/Auto-tools/Projects/Mozmill#Meetings meetings] and on the [http://groups.google.com/group/mozmill-dev?lnk= dev-list] we'll discuss whether they belong in the "Must Have" or "Nice to Have" category.
| | To track the current work we have added a couple of queries to assist us in managing the release. Details about the work planned in quarter 2013/2 can be found here: https://wiki.mozilla.org/Auto-tools/Projects/Mozmill_2.0_2013Q2 |
|
| |
|
| = The Whiteboard -- Add Something! = | | == Overview == |
| * (Maybe) Native event system for event generation - (onplan)
| | This is a list of all the [https://bugzilla.mozilla.org/buglist.cgi?status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=mozmill-2.0%2B&product=Testing bugs reports] which have to be fixed for Mozmill 2.0: |
| * Simpler syntax for performing element identification in chrome content (onplan)
| |
| * Common JS code loading modules (onplan)
| |
| * Make the recorder record usable tests, remove some of its flakiness (onplan)
| |
|
| |
|
| = Must Haves = | | <bugzilla type="count" display="bar"> |
| * <strike>New UI for extension based on Bespin</strike> (done)
| | { |
| * Refactored and shared command line handling (with the rest of the test harnesses) (onplan)
| | "whiteboard": "[mozmill-2.0+]", |
| * Refactored and shared process management for process under test (shared with other test harnesses) (onplan)
| | "x_axis_field": "status" |
| * Better support for test debugging
| | } |
| | </bugzilla> |
|
| |
|
| = Nice to Haves = | | To only see the open bugs check this [https://bugzilla.mozilla.org/buglist.cgi?list_id=6319142&resolution=---&status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=mozmill-2.0%2B query]. |
|
| |
|
| = The Plan = | | == Request queue: mozilla-2.1? == |
| As things bubble down into a plan, they will end up here. We will remove items above as they are landed on the plan.
| | <bugzilla> |
| | | { |
| == Module Loading System ==
| | "whiteboard": "[mozmill-2.1?]", |
| * Replace Module loading system with CommonJS loading for both tests and mozmill modules as well
| | "status": ["unconfirmed", "new", "assigned", "reopened"] |
| ** reuse assert module from node to replace the JUM module entirely (possible)
| | } |
| | | </bugzilla> |
| == Command Line ==
| |
| * Refactor inheritance model to make it simpler to extend
| |
| * Better slots for commands to make it less confusing
| |
| * Better option handling
| |
| * Use same options as other test harnesses where possible (work toward shared option class)
| |
| | |
| == Event System ==
| |
| * Expected Events - see {{bug|583604}}
| |
| * Native Events are needed as well to remedy focus issues (take Selenium code)
| |
| ** Windows - should be working
| |
| ** Linux - need mouse support
| |
| ** Mac - unknown
| |
| ** Integration issues with these binary components now being a part of mozmill
| |
| ** Provide a fallback mechanism to eventutils
| |
| | |
| == Network Handling ==
| |
| * Use ctypes for Javascript side of JSbridge so that if the application goes into offline mode our socket isn't hosed. (ctypes to necko libraries directly)
| |
| * Make a restart functionality that saves current state of controller - better restart tests.
| |
| | |
| == Test Harness for Mozmill ==
| |
| * Use the Jetpack test harness to make a test harness for the mozmill system itself
| |
| * Clean out the tests/ directory and ensure all the cruft is eliminated from there (already done?)
| |
| | |
| == Httpd.js ==
| |
| * Should be removed from mozmill tree
| |
| * Use existing server available from test package.
| |
| * Need manifest support to denote what tests require httpd, and will likely need the same sjs support that we will need to do remote httpd tests for reftest and xpcshell
| |
| | |
| == Manifest support ==
| |
| | |
| https://bugzilla.mozilla.org/show_bug.cgi?id=585106
| |
| | |
| * Manifest should help designate what is and is not a test file
| |
| * Manifest should provide canonical names for tests: bug 580057
| |
| * Manifest should indicate what test is restart, which is not, and can tie together restart tests so they don't have to be named test1, test2, etc
| |
| * Use same manifest as universal manifest (including parsing code).
| |
| | |
| == Mozmill Python Side Refactor ==
| |
| * Break up Mozmill into separate python files in one package
| |
| * TODO: Define what files those are
| |
| | |
| == Mozrunner Refactor ==
| |
| * Break into reusable components based on functionality
| |
| * TODO: How does someone install "mozrunner" if it is a collection of packages?
| |
| | |
| == Observer/Listener System ==
| |
| * Get rid of sleeps entirely
| |
| * Waits all become "waitForNotification" types of paradigms
| |
| * Might be able to reuse some jetpack api's for this...
| |
| * Need to be able to observe both application and mozmill level events
| |
| | |
| == E10S ==
| |
| * Support event generation refactoring will help us support e10s changes
| |
| * Might be issues that will need to be addressed in the inspector and recorder
| |
| | |
| == Inspector ==
| |
| * Overlay into the Firefox 4 Inspector (if available in the application) to have it do inspecting for us
| |
| * Inspector should prevent default click behavior to make it easier to use (go back to using key control?)
| |
| | |
| == Recorder ==
| |
| * User should be able to record a test and play it back without changing the tests
| |
| ** Will need to use sleeps when recording to pause the test between actions to simulate the user's time spent between actions.
| |
| | |
| == ElementsLib ==
| |
| * Make elements easier to lookup by providing a editor completion (or at least a reasonable dot notation) for elements in chrome of each application. So you can say toolbar.uribar.textbox instead of the giant Lookup expression. This is a mapping that should be generated for chrome elements. We should be able to generate a mapping for all non-dynamic chrome elements to their necessary expressions.
| |