Frontend QA Polish Changes (#1703)
Fixes #1696 - Inverts the toggle button state for screenshot comparison, is now untoggled by default - Changes the Resources tab to a puzzle piece - Parity with the metaphor used in ReplayWeb.page. Would like to leave databases to represent actual databases... Which given the app could very well make their way in here! - Fixes the dashed boarder radius being applied to the text comparison tab - Sets the data table header row to `position: sticky;` so it's always visible if the table scrolls! - This applies to all data tables, tested the one in QA review, the overview page, and the org settings members list - Casing changes for parity with other dropdown sorting controls Co-authored-by: Emma Segal-Grossman <hi@emma.cafe>
This commit is contained in:
		
							parent
							
								
									ecaa851688
								
							
						
					
					
						commit
						a60f56b87a
					
				| @ -61,10 +61,12 @@ export class DataTable extends TailwindElement { | ||||
|     }`;
 | ||||
|     return html` | ||||
|       <btrix-table | ||||
|         class="overflow-auto rounded border" | ||||
|         class="relative h-full w-full rounded border" | ||||
|         style=${gridAutoColumnsStyle} | ||||
|       > | ||||
|         <btrix-table-head class="rounded-t border-b bg-neutral-50"> | ||||
|         <btrix-table-head | ||||
|           class="sticky top-0 z-10 rounded-t-[0.1875rem] border-b bg-neutral-50" | ||||
|         > | ||||
|           ${this.columns.map( | ||||
|             (content, i) => html` | ||||
|               <btrix-table-header-cell class=${i > 0 ? "border-l" : ""}> | ||||
| @ -73,7 +75,7 @@ export class DataTable extends TailwindElement { | ||||
|             `,
 | ||||
|           )} | ||||
|         </btrix-table-head> | ||||
|         <btrix-table-body> | ||||
|         <btrix-table-body class="overflow-auto"> | ||||
|           ${this.rows.map( | ||||
|             (cells, i) => html` | ||||
|               <btrix-table-row class=${i > 0 ? "border-t" : ""}> | ||||
|  | ||||
| @ -244,14 +244,14 @@ export class PageList extends TailwindElement { | ||||
|           }} | ||||
|         > | ||||
|           <sl-option value="screenshotMatch" | ||||
|             >${msg("Worst screenshot match")}</sl-option | ||||
|             >${msg("Worst Screenshot Match")}</sl-option | ||||
|           > | ||||
|           <sl-option value="textMatch" | ||||
|             >${msg("Worst extracted text match")}</sl-option | ||||
|             >${msg("Worst Extracted Text Match")}</sl-option | ||||
|           > | ||||
|           <sl-option value="comments">${msg("Most comments")}</sl-option> | ||||
|           <sl-option value="approved">${msg("Recently approved")}</sl-option> | ||||
|           <sl-option value="notApproved">${msg("Not approved")}</sl-option> | ||||
|           <sl-option value="comments">${msg("Most Comments")}</sl-option> | ||||
|           <sl-option value="approved">${msg("Recently Approved")}</sl-option> | ||||
|           <sl-option value="notApproved">${msg("Not Approved")}</sl-option> | ||||
|         </sl-select> | ||||
|       </div> | ||||
|     `;
 | ||||
| @ -310,7 +310,7 @@ export class PageList extends TailwindElement { | ||||
|           <sl-option value="">${msg("Any")}</sl-option> | ||||
|           <sl-option value="notReviewed">${msg("None")}</sl-option> | ||||
|           <sl-option value="reviewed" | ||||
|             >${msg("Approved, rejected, or commented")}</sl-option | ||||
|             >${msg("Approved, Rejected, or Commented")}</sl-option | ||||
|           > | ||||
|           <sl-option value="approved">${msg("Approved")}</sl-option> | ||||
|           <sl-option value="rejected">${msg("Rejected")}</sl-option> | ||||
|  | ||||
| @ -484,7 +484,7 @@ export class ArchivedItemDetail extends TailwindElement { | ||||
|               section: "qa", | ||||
|               iconLibrary: "default", | ||||
|               icon: "clipboard2-data-fill", | ||||
|               label: msg("QA"), | ||||
|               label: msg("Quality Assurance"), | ||||
|             })} | ||||
|           `,
 | ||||
|         )} | ||||
|  | ||||
| @ -592,11 +592,11 @@ export class ArchivedItemDetailQA extends TailwindElement { | ||||
|           > | ||||
|             <sl-option value="title.1">${msg("Title")}</sl-option> | ||||
|             <sl-option value="url.1">${msg("URL")}</sl-option> | ||||
|             <sl-option value="notes.-1">${msg("Most comments")}</sl-option> | ||||
|             <sl-option value="notes.-1">${msg("Most Comments")}</sl-option> | ||||
|             <sl-option value="approved.-1" | ||||
|               >${msg("Recently approved")}</sl-option | ||||
|               >${msg("Recently Approved")}</sl-option | ||||
|             > | ||||
|             <sl-option value="approved.1">${msg("Not approved")}</sl-option> | ||||
|             <sl-option value="approved.1">${msg("Not Approved")}</sl-option> | ||||
|           </sl-select> | ||||
|         </div> | ||||
|       </div> | ||||
|  | ||||
| @ -377,7 +377,10 @@ export class ArchivedItemQA extends TailwindElement { | ||||
|         <div | ||||
|           class="grid--pageToolbar flex items-center justify-between overflow-hidden border-b py-2" | ||||
|         > | ||||
|           <h2 class="mr-4 truncate text-base font-semibold text-neutral-700"> | ||||
|           <h2 | ||||
|             class="mr-4 truncate text-base font-semibold text-neutral-700" | ||||
|             title="${this.page ? this.page.title : nothing}" | ||||
|           > | ||||
|             ${this.page ? this.page.title || msg("no page title") : nothing} | ||||
|           </h2> | ||||
|           <div class="flex gap-4"> | ||||
| @ -450,7 +453,7 @@ export class ArchivedItemQA extends TailwindElement { | ||||
|               ?active=${this.tab === "resources"} | ||||
|               @click=${this.onTabNavClick} | ||||
|             > | ||||
|               <sl-icon name="server"></sl-icon> | ||||
|               <sl-icon name="puzzle-fill"></sl-icon> | ||||
|               ${msg("Resources")} | ||||
|             </btrix-navigation-button> | ||||
|             <btrix-navigation-button | ||||
| @ -651,43 +654,45 @@ export class ArchivedItemQA extends TailwindElement { | ||||
| 
 | ||||
|   private renderPanelToolbar() { | ||||
|     const buttons = html` | ||||
|       <div class="ml-1 flex"> | ||||
|         ${choose(this.tab, [ | ||||
|           [ | ||||
|             "replay", | ||||
|             () => html` | ||||
|               <!-- <sl-icon-button name="arrow-clockwise"></sl-icon-button> --> | ||||
|             `,
 | ||||
|           ], | ||||
|           [ | ||||
|             "screenshots", | ||||
|             () => html` | ||||
|       ${choose(this.tab, [ | ||||
|         // [
 | ||||
|         //   "replay",
 | ||||
|         //   () => html`
 | ||||
|         //     <div class="flex">
 | ||||
|         //        <sl-icon-button name="arrow-clockwise"></sl-icon-button>
 | ||||
|         //     </div>
 | ||||
|         //   `,
 | ||||
|         // ],
 | ||||
|         [ | ||||
|           "screenshots", | ||||
|           () => html` | ||||
|             <div class="flex"> | ||||
|               <sl-tooltip | ||||
|                 content=${msg("Toggle view")} | ||||
|                 content=${msg("Toggle screenshot wipe view")} | ||||
|                 placement="bottom-start" | ||||
|               > | ||||
|                 <btrix-button | ||||
|                   icon | ||||
|                   variant=${this.splitView ? "primary" : "neutral"} | ||||
|                   variant=${!this.splitView ? "primary" : "neutral"} | ||||
|                   @click="${() => (this.splitView = !this.splitView)}" | ||||
|                 > | ||||
|                   <sl-icon name="vr" label=${msg("Split view")}></sl-icon> | ||||
|                 </btrix-button> | ||||
|               </sl-tooltip> | ||||
|             `,
 | ||||
|           ], | ||||
|         ])} | ||||
|       </div> | ||||
|             </div> | ||||
|           `,
 | ||||
|         ], | ||||
|       ])} | ||||
|     `;
 | ||||
|     return html` | ||||
|       <div | ||||
|         class="${this.tab === "replay" | ||||
|           ? "rounded-t-lg" | ||||
|           : "rounded-lg mb-3"} flex h-12 items-center border bg-neutral-50 text-base" | ||||
|           : "rounded-lg mb-3"} flex h-12 items-center gap-2 border bg-neutral-50 p-2 text-base" | ||||
|       > | ||||
|         ${buttons} | ||||
|         <div | ||||
|           class="mx-1.5 flex h-8 min-w-0 flex-1 items-center justify-between gap-2 overflow-hidden whitespace-nowrap rounded border bg-neutral-0 px-2 text-sm" | ||||
|           class="flex h-8 min-w-0 flex-1 items-center justify-between gap-2 overflow-hidden whitespace-nowrap rounded border bg-neutral-0 px-2 text-sm" | ||||
|         > | ||||
|           <div class="fade-out-r scrollbar-hidden flex-1 overflow-x-scroll"> | ||||
|             <span class="pr-2">${this.page?.url || "http://"}</span> | ||||
|  | ||||
| @ -49,7 +49,7 @@ export const styles = css` | ||||
|   } | ||||
| 
 | ||||
|   sl-image-comparer::part(divider) { | ||||
|     width: 1rem; | ||||
|     --divider-width: 1rem; | ||||
|     border-left: 1px solid var(--sl-panel-border-color); | ||||
|     border-right: 1px solid var(--sl-panel-border-color); | ||||
|     box-shadow: var(--sl-shadow-large); | ||||
|  | ||||
| @ -86,25 +86,24 @@ export function renderResources(crawlData: ReplayData, qaData: ReplayData) { | ||||
| 
 | ||||
|   return html` | ||||
|     <div class=${tw`flex h-full flex-col outline`}> | ||||
|       <div class=${tw`flex-1 overflow-auto overscroll-contain pb-3`}> | ||||
|       <div class=${tw`flex-1 overflow-auto overscroll-contain`}> | ||||
|         ${crawlData && qaData | ||||
|           ? crawlData.resources && qaData.resources | ||||
|             ? renderDiff(crawlData.resources, qaData.resources) | ||||
|             : noData | ||||
|           : renderSpinner()} | ||||
|       </div> | ||||
|       <footer class=${tw`border-t pt-2 text-xs text-neutral-600`}> | ||||
|         <p class=${tw`mb-2`}> | ||||
|           ${msg('"Good" and "Bad" indicates the status code of the resource.')} | ||||
|         </p> | ||||
|       <footer class=${tw`pt-2 text-xs text-neutral-600`}> | ||||
|         <dl> | ||||
|           <div class=${tw`flex gap-1`}> | ||||
|             <dt class=${tw`font-semibold`}>${msg("Good:")}</dt> | ||||
|             <dd>${msg("Status code between 200-399")}</dd> | ||||
|             <dd>${msg("Success (2xx) and Redirection (3xx) status codes")}</dd> | ||||
|           </div> | ||||
|           <div class=${tw`flex gap-1`}> | ||||
|             <dt class=${tw`font-semibold`}>${msg("Bad:")}</dt> | ||||
|             <dd>${msg("Status code between 400-599")}</dd> | ||||
|             <dd> | ||||
|               ${msg("Client error (4xx) and Server error (5xx) status codes")} | ||||
|             </dd> | ||||
|           </div> | ||||
|         </dl> | ||||
|       </footer> | ||||
|  | ||||
| @ -25,7 +25,7 @@ function renderDiff( | ||||
| 
 | ||||
|       return html` | ||||
|         <div | ||||
|           class=${tw`flex-1 overflow-hidden rounded-lg border-dashed p-4 first-of-type:border-r`} | ||||
|           class=${tw`flex-1 overflow-hidden border-dashed p-4 first-of-type:border-r`} | ||||
|           aria-labelledby="crawlTextHeading" | ||||
|         > | ||||
|           ${diff.map((part) => { | ||||
| @ -42,7 +42,7 @@ function renderDiff( | ||||
|           })} | ||||
|         </div> | ||||
|         <div | ||||
|           class=${tw`flex-1 overflow-hidden rounded-lg border-dashed p-4 first-of-type:border-r`} | ||||
|           class=${tw`flex-1 overflow-hidden border-dashed p-4 first-of-type:border-r`} | ||||
|           aria-labelledby="qaTextHeading" | ||||
|         > | ||||
|           ${diff.map((part) => { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user