/* * The list of phases mapped to their corresponding profiles. The object * here must be in JSON format as it will get parsed by the Python * testrunner. It is parsed by the YAML package, so it relatively flexible.
*/ var phases = {
phase1: "profile1",
phase2: "profile2",
phase3: "profile1",
phase4: "profile2",
};
// the initial list of bookmarks to add to the browser var bookmarksInitial = {
menu: [
{ folder: "foldera" },
{ folder: "folderb" },
{ folder: "folderc" },
{ folder: "folderd" },
],
// a list of bookmarks to delete during a 'delete' action on P2 var bookmarksToDelete = {
menu: [{ folder: "foldera" }, { folder: "folderb" }], "menu/folderc": [{ uri: "http://www.yahoo.com", title: "Yahoo" }],
};
// the modifications to make on P1, after P2 has synced, but before P1 has gotten // P2's changes var bookmarkMods = {
menu: [
{ folder: "foldera" },
{ folder: "folderb" },
{ folder: "folderc" },
{ folder: "folderd" },
],
// we move this child out of its folder (p1), after deleting the folder (p2) // and expect the child to come back to p2 after sync. "menu/foldera": [
{
uri: "http://www.cnn.com",
title: "CNN",
changes: { location: "menu/folderd" },
},
],
// we rename this child (p1) after deleting the folder (p2), and expect the child // to be moved into great grandparent (menu) "menu/folderb": [
{
uri: "http://www.apple.com",
title: "Apple",
tags: [],
changes: { title: "Mac" },
},
],
// we move this child (p1) after deleting the child (p2) and expect it to survive "menu/folderc": [
{
uri: "http://www.yahoo.com",
title: "Yahoo",
changes: { location: "menu/folderd" },
},
],
"menu/folderd": [],
};
// a list of bookmarks to delete during a 'delete' action
bookmarksToDelete = {
menu: [{ folder: "foldera" }, { folder: "folderb" }], "menu/folderc": [{ uri: "http://www.yahoo.com", title: "Yahoo" }],
};
// expected bookmark state after conflict resolution var bookmarksExpected = {
menu: [
{ folder: "folderc" },
{ folder: "folderd" },
{ uri: "http://www.apple.com", title: "Mac" },
],
// Add bookmarks to profile1 and sync.
Phase("phase1", [
[Bookmarks.add, bookmarksInitial],
[Bookmarks.verify, bookmarksInitial],
[Sync],
[Bookmarks.verify, bookmarksInitial],
]);
// Sync to profile2 and verify that the bookmarks are present. Delete // bookmarks/folders, verify that it's not present, and sync
Phase("phase2", [
[Sync],
[Bookmarks.verify, bookmarksInitial],
[Bookmarks.delete, bookmarksToDelete],
[Bookmarks.verifyNot, bookmarksToDelete],
[Sync],
]);
// Using profile1, modify the bookmarks, and sync *after* the modification, // and then sync again to propagate the reconciliation changes.
Phase("phase3", [
[Bookmarks.verify, bookmarksInitial],
[Bookmarks.modify, bookmarkMods],
[Sync],
[Bookmarks.verify, bookmarksExpected],
[Bookmarks.verifyNot, bookmarksToDelete],
]);
// Back in profile2, do a sync and verify that we're in the expected state
Phase("phase4", [
[Sync],
[Bookmarks.verify, bookmarksExpected],
[Bookmarks.verifyNot, bookmarksToDelete],
]);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.