diff --git a/resources/js/components/assets/GalleryBrowser.vue b/resources/js/components/assets/GalleryBrowser.vue index 8399688e..20e7d6ea 100644 --- a/resources/js/components/assets/GalleryBrowser.vue +++ b/resources/js/components/assets/GalleryBrowser.vue @@ -700,7 +700,7 @@ onUnmounted(() => {
@@ -717,6 +717,7 @@ onUnmounted(() => { variant="outline" size="icon" class="size-8 bg-rose-100 hover:bg-rose-200" + data-testid="gallery-asset-delete" @click.stop="handleDelete(asset.id)" > @@ -771,7 +772,7 @@ onUnmounted(() => { />
-
+
@@ -868,7 +869,7 @@ onUnmounted(() => {
-
+
diff --git a/tests/Browser/MobileGalleryTest.php b/tests/Browser/MobileGalleryTest.php new file mode 100644 index 00000000..70983e15 --- /dev/null +++ b/tests/Browser/MobileGalleryTest.php @@ -0,0 +1,38 @@ +create(); + $workspace = Workspace::factory()->create(['user_id' => $user->id]); + $workspace->members()->attach($user->id, ['role' => Role::Member->value]); + $user->update(['current_workspace_id' => $workspace->id]); + + Media::factory()->for($workspace, 'mediable')->create([ + 'collection' => 'assets', + 'original_filename' => 'on-the-go.jpg', + ]); + + $this->actingAs($user); + + $page = visit(route('app.assets.index'))->resize(375, 812); + + // Uploads are fetched async after mount; settle before asserting. + $page->script(<<<'JS' + (async () => { + const sel = '[data-testid="gallery-asset-delete"]'; + for (let i = 0; i < 100; i++) { + const el = document.querySelector(sel); + if (el && el.getBoundingClientRect().height > 0) return; + await new Promise((r) => setTimeout(r, 50)); + } + })(); + JS); + + $page->assertVisible('@gallery-asset-delete'); +});