add_task(async function test() {
  // Disable tab animations
  gReduceMotionOverride = true;

  // Open Bookmarks Toolbar
  let bookmarksToolbar = document.getElementById("PersonalToolbar");
  setToolbarVisibility(bookmarksToolbar, true);
  ok(!bookmarksToolbar.collapsed, "bookmarksToolbar should be visible now");

  let tab1 = await addTab("http://mochi.test:8888/1");
  let tab2 = await addTab("http://mochi.test:8888/2");
  let tab3 = await addTab("http://mochi.test:8888/3");
  let tab4 = await addTab("http://mochi.test:8888/4");
  let tab5 = await addTab("http://mochi.test:8888/5");

  is(gBrowser.multiSelectedTabsCount, 0, "Zero multiselected tabs");

  await BrowserTestUtils.switchTab(gBrowser, tab2);
  await triggerClickOn(tab1, { ctrlKey: true });

  ok(tab1.multiselected, "Tab1 is multiselected");
  ok(tab2.multiselected, "Tab2 is multiselected");
  ok(!tab3.multiselected, "Tab3 is not multiselected");
  ok(!tab4.multiselected, "Tab4 is not multiselected");
  ok(!tab5.multiselected, "Tab5 is not multiselected");
  is(gBrowser.multiSelectedTabsCount, 2, "Two multiselected tabs");

  info("Adding a bookmark to the bookmarks toolbar.");
  let addedBookmark = await PlacesUtils.bookmarks.insert({
    parentGuid: PlacesUtils.bookmarks.toolbarGuid,
    title: "Test",
    url: "https://example.com",
  });

  registerCleanupFunction(async () => {
    await PlacesUtils.bookmarks.remove(addedBookmark);
  });

  // Use getElementsByClassName so the list is live and will update as items change.
  let currentBookmarks =
    bookmarksToolbar.getElementsByClassName("bookmark-item");
  let startBookmarksLength = currentBookmarks.length;

  // The destination element should be a non-folder bookmark
  let destBookmarkItem = () =>
    bookmarksToolbar.querySelector(
      "#PlacesToolbarItems .bookmark-item:not([container])"
    );

  await EventUtils.synthesizePlainDragAndDrop({
    srcElement: tab1,
    destElement: destBookmarkItem(),
  });
  await TestUtils.waitForCondition(
    () => currentBookmarks.length == startBookmarksLength + 2,
    "waiting for 2 bookmarks"
  );
  is(
    currentBookmarks.length,
    startBookmarksLength + 2,
    "Bookmark count should have increased by 2"
  );

  // Drag non-selection to the bookmarks toolbar
  startBookmarksLength = currentBookmarks.length;
  await EventUtils.synthesizePlainDragAndDrop({
    srcElement: tab3,
    destElement: destBookmarkItem(),
  });
  await TestUtils.waitForCondition(
    () => currentBookmarks.length == startBookmarksLength + 1,
    "waiting for 1 bookmark"
  );
  is(
    currentBookmarks.length,
    startBookmarksLength + 1,
    "Bookmark count should have increased by 1"
  );

  BrowserTestUtils.removeTab(tab1);
  BrowserTestUtils.removeTab(tab2);
  BrowserTestUtils.removeTab(tab3);
  BrowserTestUtils.removeTab(tab4);
  BrowserTestUtils.removeTab(tab5);
});
