This repository demonstrates two behavioral inconsistencies between the Microsoft Edge and Google Chrome sidepanel implementations:
Watch a walkthrough of the test cases demonstrating both inconsistencies:
π₯ Loom Video: MS Edge Sidepanel Inconsistencies
Chrome Behavior: When the sidepanel is opened on a tab and then opened on a subsequent tab with an updated path option, the sidepanel immediately displays the correct path for the current tab.
Edge Behavior: When opening the sidepanel on subsequent tabs with an updated path, Edge displays the stale path from the first tab where the sidepanel was opened. The path only updates correctly after closing and reopening the sidepanel
Evidence: The controlling frame tab ID shows the mismatch - it references the first tab's ID instead of the current tab's ID.
Chrome Behavior: When a sidepanel is opened on specific tabs, it remains open on those tabs even when navigating to/from tabs where the sidepanel was never opened.
Edge Behavior: When navigating to a tab where the sidepanel was never opened, Edge closes the sidepanel on other tabs as well, including tabs where it was previously opened.
- Chrome Version: 142.0.7444.162
- Edge Version: 142.0.3595.94
- Load the
distfolder into a clean browser as an unpacked extension - Pin the extension in the toolbar
- β Behavior is consistent between browsers
- β Behavior differs between browsers
- Close all tabs except the extensions page
- Reload the extension (unless otherwise specified)
Steps:
- Open a new tab
- Click the extension icon in the toolbar
Results:
- Chrome: Sidepanel opens, displays "Current URL: chrome://newtab/", tab ID matches controlling frame ID
- Edge: Sidepanel opens, displays "Current URL: edge://newtab/", tab ID matches controlling frame ID
β Browsers behave consistently
Steps:
- Open a new tab
- Navigate to https://news.ycombinator.com/
- Click the extension icon in the toolbar
Results:
- Chrome: Sidepanel opens, displays "Current URL: https://news.ycombinator.com/", tab ID matches controlling frame ID
- Edge: Sidepanel opens, displays "Current URL: https://news.ycombinator.com/", tab ID matches controlling frame ID
β Browsers behave consistently
Demonstrates: Sidepanel displays stale path when opened without reloading the extension
Steps:
- Open a new tab
- Click the extension icon in the toolbar
- Close all tabs except extensions page
- Do NOT reload the extension (critical for reproducing this difference)
- Open a new tab
- Click the extension icon in the toolbar
Results:
- Chrome: Tab ID matches controlling frame ID β
- Edge: Tab ID differs from controlling frame ID β
Observation: Edge retains the path/context from a previous tab rather than updating to the current tab. The controlling frame tab ID mismatch is evidence of this stale path issue.
Demonstrates: Sidepanel path is not updated when opening on a second tab
Steps:
- Open a new tab, navigate to https://news.ycombinator.com/
- Click the extension icon to open the sidepanel
- Open a second tab, navigate to https://en.wikipedia.org/wiki/Main_Page
- Click the extension icon to open the sidepanel
Results:
- Chrome: Wikipedia tab ID matches controlling frame ID β
- Edge: Wikipedia tab ID differs from controlling frame ID (shows Hacker News tab ID instead) β
Observation: The sidepanel on Wikipedia displays the path/context from Hacker News instead of Wikipedia's path. The controlling frame tab ID points to Hacker News, confirming the path was not updated.
Note: Tab navigation or toggling the sidepanel closed and open again causes the path to update correctly and the IDs to match in Edge
Demonstrates: Different sidepanel state persistence behavior between browsers
Steps:
- Open a new tab, navigate to https://news.ycombinator.com/
- Click the extension icon to open the sidepanel
- Open a second new tab (don't open sidepanel on this tab)
Results:
- Chrome:
- New tab: sidepanel is closed β
- Hacker News tab: sidepanel remains open β
- Edge:
- New tab: sidepanel is closed β
- Hacker News tab: sidepanel is closed β
Demonstrates: Sidepanel state behavior differs when navigating to a tab without sidepanel
Steps:
- Open tab 1, navigate to https://news.ycombinator.com/ (leave sidepanel closed)
- Open tab 2, navigate to https://en.wikipedia.org/wiki/Main_Page
- Click the extension icon to open the sidepanel on Wikipedia tab
- Click on the Hacker News tab
- Click back on the Wikipedia tab
Results:
- Chrome:
- Hacker News: sidepanel closed β
- Wikipedia: sidepanel remains open β
- Edge:
- Hacker News: sidepanel closed β
- Wikipedia: sidepanel closed β
Demonstrates: Behavior persists with new tab pages
Steps:
- Open a new tab (leave as new tab page)
- Open a second new tab, navigate to https://news.ycombinator.com/
- Click the extension icon to open the sidepanel
- Click back to the first (new) tab
- Click back to the Hacker News tab
Results:
- Chrome:
- First (new) tab: sidepanel closed β
- Hacker News: sidepanel remains open β
- Edge:
- First (new) tab: sidepanel closed β
- Hacker News: sidepanel closed β
Demonstrates: Both inconsistencies observable in the same scenario
Steps:
- Open tab 1, navigate to https://news.ycombinator.com/
- Click the extension icon to open the sidepanel
- Open tab 2, navigate to https://en.wikipedia.org/wiki/Main_Page
- Click the extension icon to open the sidepanel
- Navigate between the two tabs
Results - On Opening Wikipedia Sidepanel (Step 4):
- Chrome: Tab ID matches controlling frame ID β
- Edge: Tab ID differs from controlling frame ID (shows Hacker News tab ID) β (Inconsistency #1)
Results - After Navigating Between Tabs (Step 5):
- Chrome:
- Both tabs: sidepanel remains open, IDs match β
- Edge:
- Both tabs: sidepanel remains open, IDs eventually match (after navigating away and back)
β οΈ
- Both tabs: sidepanel remains open, IDs eventually match (after navigating away and back)
Demonstrates: State persistence differs when navigating through multiple tabs
Steps:
- Open tab 1 (Hacker News), open sidepanel
- Open tab 2 (Wikipedia), open sidepanel (Edge shows stale path/tab ID mismatch here)
- Open tab 3 (Reddit), leave sidepanel closed
- Navigate: Hacker News β Wikipedia β Reddit
Results:
- Chrome:
- Hacker News: sidepanel open β
- Wikipedia: sidepanel open β
- Reddit: sidepanel closed β
- Edge:
- Hacker News: sidepanel closed β
- Wikipedia: sidepanel closed β
- Reddit: sidepanel closed β
Demonstrates: Behavior differs regardless of which tabs have sidepanel open
Steps:
- Open tab 1 (Hacker News), leave sidepanel closed
- Open tab 2 (Wikipedia), open sidepanel
- Open tab 3 (Reddit), open sidepanel (Edge shows stale path/tab ID mismatch here)
- Navigate: Hacker News β Wikipedia β Reddit
Results:
- Chrome:
- Hacker News: sidepanel closed β
- Wikipedia: sidepanel open β
- Reddit: sidepanel open β
- Edge:
- Hacker News: sidepanel closed β
- Wikipedia: sidepanel closed β
- Reddit: sidepanel closed β
Demonstrates: Non-adjacent tabs exhibit the same behavior difference
Steps:
- Open tab 1 (Hacker News), open sidepanel
- Open tab 2 (Wikipedia), leave sidepanel closed
- Open tab 3 (Reddit), open sidepanel (Edge shows stale path/tab ID mismatch here)
- Navigate: Hacker News β Wikipedia β Reddit
Results:
- Chrome:
- Hacker News: sidepanel open β
- Wikipedia: sidepanel closed β
- Reddit: sidepanel open β
- Edge:
- Hacker News: sidepanel open
β οΈ - Wikipedia: sidepanel closed β
- Reddit: sidepanel closed β
- Hacker News: sidepanel open
Note: Different navigation orders produce different behaviors in Edge
Demonstrates: Navigation order affects the state persistence behavior
Steps:
- Open tab 1 (Hacker News), open sidepanel
- Open tab 2 (Wikipedia), leave sidepanel closed
- Open tab 3 (Reddit), open sidepanel (Edge shows stale path/tab ID mismatch here)
- Navigate: Wikipedia β Hacker News β Reddit
Results:
- Chrome:
- Wikipedia: sidepanel closed β
- Hacker News: sidepanel open β
- Reddit: sidepanel open β
- Edge:
- Wikipedia: sidepanel closed β
- Hacker News: sidepanel closed β
- Reddit: sidepanel closed β
Demonstrates: Avoiding the tab without sidepanel avoids the inconsistency
Steps:
- Open tab 1 (Hacker News), open sidepanel
- Open tab 2 (Wikipedia), leave sidepanel closed
- Open tab 3 (Reddit), open sidepanel
- Navigate: Hacker News β Reddit (skip Wikipedia)
Results:
- Chrome: Hacker News: OPEN, Reddit: OPEN, Wikipedia: closed β
- Edge: Hacker News: OPEN, Reddit: OPEN, Wikipedia: closed β
β Browsers behave consistently when the tab without sidepanel is never visited
Pattern: When opening the sidepanel on subsequent tabs with updated path values, the two browsers differ in how they apply the new path.
Chrome Behavior:
- The sidepanel immediately displays the correct path for the current tab
- Each call to
chrome.sidePanel.setOptions()with a new path is applied immediately - The controlling frame tab ID matches the current tab ID
Edge Behavior:
- On first open of a subsequent tab, the sidepanel displays a stale path from the first tab
- The updated path is not applied until the user navigates away from the tab and back
- The controlling frame tab ID references the first tab instead of the current tab (evidence of stale path)
Affected Test Cases: 1.1, 1.2, 1.3 + 2.4 (combined with Inconsistency #2), and noted in tests 2.5-2.8
Note: The stale path issue in Edge resolves itself after tab navigation or toggling the sidepanel closed and open again.
Pattern: The two browsers handle sidepanel state differently when navigating to a tab where the sidepanel was never opened.
Chrome Behavior:
- Each tab maintains its own sidepanel state independently
- Opening/closing sidepanel on one tab doesn't affect other tabs
- Navigating between tabs preserves per-tab sidepanel state
Edge Behavior:
- Navigating to a tab without sidepanel closes the sidepanel on other tabs as well
- Sidepanel state is not preserved on tabs where it was previously opened
- Tab switching results in sidepanel closure across multiple tabs
Affected Test Cases: 2.1, 2.2, 2.3, 2.5, 2.6, 2.7, 2.8
- Inconsistency #1: 100% reproducible on first sidepanel open for subsequent tabs, resolves after tab navigation or toggling the sidepanel closed then open again
- Inconsistency #2: 100% reproducible - occurs consistently when navigating to a tab without sidepanel
-
Inconsistency #1: When
chrome.sidePanel.setOptions()is called with an updatedpathfor a new tab, should the path be applied immediately, or is it intended for the path to remain stale until tab navigation occurs? -
Inconsistency #2: Is the difference in tab-level sidepanel state persistence intentional? Should sidepanel state be maintained independently per tab, or is a global closing behavior the intended design?
-
Are these implementation differences part of a deliberate design choice, or should alignment between browsers be expected for the sidepanel API?