|
4 | 4 | deleteReview, |
5 | 5 | loadReview, |
6 | 6 | addCommentViaUI, |
| 7 | + seedComment, |
7 | 8 | } from "./helpers"; |
8 | 9 |
|
9 | 10 | /** |
@@ -129,6 +130,73 @@ test.describe("Hide Resolved", () => { |
129 | 130 | await expect(resolvedBlock).toBeVisible(); |
130 | 131 | }); |
131 | 132 |
|
| 133 | + test("comment arrows skip hidden resolved comments in both directions", async ({ |
| 134 | + page, |
| 135 | + request, |
| 136 | + }) => { |
| 137 | + await seedComment(request, token, { |
| 138 | + body: "Open A", |
| 139 | + startLine: 1, |
| 140 | + }); |
| 141 | + await seedComment(request, token, { |
| 142 | + body: "Open C", |
| 143 | + startLine: 6, |
| 144 | + }); |
| 145 | + await loadReview(page, token); |
| 146 | + await addAndResolveComment(page, "Resolved B", { |
| 147 | + lineIndex: 1, |
| 148 | + }); |
| 149 | + |
| 150 | + const openA = page |
| 151 | + .locator(".comment-card:not(.resolved-card)") |
| 152 | + .filter({ hasText: "Open A" }); |
| 153 | + const resolvedCard = page |
| 154 | + .locator(".comment-card.resolved-card") |
| 155 | + .filter({ hasText: "Resolved B" }); |
| 156 | + const openC = page |
| 157 | + .locator(".comment-card:not(.resolved-card)") |
| 158 | + .filter({ hasText: "Open C" }); |
| 159 | + |
| 160 | + await page.locator("#comment-nav-next").click(); |
| 161 | + await expect(openA).toHaveClass(/comment-nav-highlight/); |
| 162 | + await page.locator("#comment-nav-next").click(); |
| 163 | + await expect(resolvedCard).toHaveClass(/comment-nav-highlight/); |
| 164 | + |
| 165 | + await page.keyboard.press("h"); |
| 166 | + await expect(resolvedCard).not.toBeVisible(); |
| 167 | + await page.locator("#comment-nav-prev").click(); |
| 168 | + await expect(openA).toHaveClass(/comment-nav-highlight/); |
| 169 | + await expect(openC).not.toHaveClass(/comment-nav-highlight/); |
| 170 | + await expect(resolvedCard).not.toHaveClass(/comment-nav-highlight/); |
| 171 | + |
| 172 | + await page.keyboard.press("h"); |
| 173 | + await page.locator("#comment-nav-next").click(); |
| 174 | + await expect(resolvedCard).toHaveClass(/comment-nav-highlight/); |
| 175 | + |
| 176 | + await page.keyboard.press("h"); |
| 177 | + await page.locator("#comment-nav-next").click(); |
| 178 | + await expect(openC).toHaveClass(/comment-nav-highlight/); |
| 179 | + await expect(resolvedCard).not.toHaveClass(/comment-nav-highlight/); |
| 180 | + }); |
| 181 | + |
| 182 | + test("resolving a comment while hide resolved is enabled hides it", async ({ |
| 183 | + page, |
| 184 | + }) => { |
| 185 | + await loadReview(page, token); |
| 186 | + await addCommentViaUI(page, "Resolve while hidden"); |
| 187 | + await page.keyboard.press("h"); |
| 188 | + |
| 189 | + const card = page |
| 190 | + .locator(".comment-card") |
| 191 | + .filter({ hasText: "Resolve while hidden" }); |
| 192 | + await card.locator(".resolve-btn").click(); |
| 193 | + |
| 194 | + const resolvedBlock = page |
| 195 | + .locator(".comment-block:not(.panel-comment-block)") |
| 196 | + .filter({ has: page.locator(".resolved-card") }); |
| 197 | + await expect(resolvedBlock).not.toBeVisible(); |
| 198 | + }); |
| 199 | + |
132 | 200 | test("persists via localStorage across reload", async ({ page }) => { |
133 | 201 | await loadReview(page, token); |
134 | 202 |
|
|
0 commit comments