firefox-devtools / ux

Firefox DevTools UX Community
Mozilla Public License 2.0
103 stars 21 forks source link

Network Monitor's WebSocket panel #71

Closed digitarald closed 5 years ago

digitarald commented 5 years ago

Landing a new panel for Network resources to monitor and inspect WebSocket frames.

🕷 Follow work in the Meta bug. 📑 Read and edit the spec in the PRD 🧪 Play with Honza's test page (pref devtools.netmonitor.features.webSockets)

This issue will be used to discuss the end to end experience.

cc @janodvarko

fvsch commented 5 years ago

Feedback from @nchevobbe on Slack re. column order and information density:

for websocket, I wonder if the order of columns is ideal: I feel like we should have the time first, then the type and payload (I think that are the important things) also, since we have a table here, I'm pretty sure people will ask to have the ability to resize the columns :) so a first step may be to grow the payload one as much as possible, and have all the other ones only take the minimum width

Based on that in bug 1561549 I'm trying out: Type > Time > Size > Payload > Rest…

websockets-column-reordering

With the type's visual treatment it might be best to keep it as the first column, but beyond that we can do Time > Payload > Size > Rest…

And bug 1561553 suggests hiding the OpCode, MaskBit and FinBit columns by default, and letting users enable them through context menu entries.

janodvarko commented 5 years ago

The suggested column order looks good to me! Plus hiding the last three columns will also improve the UX.

One comment, could the arrows (send/received) be part of the Time column? (not in its own column).

Honza

fvsch commented 5 years ago

The advantage of keeping a Type column is that the information is accessible: it has a header (with visually hidden text), and values like <img src="…" alt="Sent" />.

We could put it in a time column, with markup looking like:

<td>
  <img src="…" alt="Sent at" />
  16:30:12
</td>

(Not my preference, but I'm not against it.)

For order, maybe put the size after the payload? Type/Time > Payload > Size (> Rest…)

janodvarko commented 5 years ago

We could put it in a time column, with markup looking like:

I like it, not strong opinion, let's see what others think.

For order, maybe put the size after the payload? Type/Time > Payload > Size (> Rest…)

This works for me

Honza

nchevobbe commented 5 years ago

We could put it in a time column

I like it as well, but that brings a question. I think I saw a bug where we plan to sort the data on table header click. If we don't put the icon in its own column, we wouldn't be able to sort by sent/received state (note that we'll have sent/received filter buttons, so maybe it doesn't matter after all)

janodvarko commented 5 years ago

(note that we'll have sent/received filter buttons, so maybe it doesn't matter after all)

Yes, I think that the filter should be the way to go in such case.

janodvarko commented 5 years ago

I found one UX issue related to the filter buttons. See the following screenshot: image

Both buttons are grey (bk), but only sent frames displayed. It's because the Received button has focus and it looks like 'checked'.

Honza

digitarald commented 5 years ago

For posterity: @janodvarko and I went through the current implementation and captured these questions and decisions (copied from requirements):

fvsch commented 5 years ago

I've reworked my patch for columns significantly in https://phabricator.services.mozilla.com/D37064

Here's the result at 2 different widths, with the 3 last columns hidden (which should be the default in the future) and with all columns shown.

Websockets table columns

wiomoc commented 5 years ago

Just wondering Chrome shows in the 'Length' column 2B less then in the current FF implementation. Maybe we should adapt that to ensure parity.

FF Chrome
fvsch commented 5 years ago

Thanks @wiomoc, I opened bug 1565984 based on your report.

digitarald commented 5 years ago

Closing this for now, filing follow-up questions in new issues.