summaryrefslogtreecommitdiff
path: root/packages/integrations/vue/test
diff options
context:
space:
mode:
authorGravatar Florian Lefebvre <contact@florian-lefebvre.dev> 2024-10-03 20:52:11 +0200
committerGravatar GitHub <noreply@github.com> 2024-10-03 20:52:11 +0200
commitf9dd9428c6cd1c9d23488ea4645f186b4a4ad4b2 (patch)
treee727e0ad919b5e6ea81c2c9e897c35661bce0a41 /packages/integrations/vue/test
parent34d79527a4cd88864c4a9128a393c0d2f7d9eda7 (diff)
downloadastro-f9dd9428c6cd1c9d23488ea4645f186b4a4ad4b2.tar.gz
astro-f9dd9428c6cd1c9d23488ea4645f186b4a4ad4b2.tar.zst
astro-f9dd9428c6cd1c9d23488ea4645f186b4a4ad4b2.zip
fix(vue): useId() collisions (#12112)
Diffstat (limited to 'packages/integrations/vue/test')
-rw-r--r--packages/integrations/vue/test/basics.test.js9
-rw-r--r--packages/integrations/vue/test/fixtures/basics/src/components/WithId.vue9
-rw-r--r--packages/integrations/vue/test/fixtures/basics/src/pages/index.astro3
3 files changed, 21 insertions, 0 deletions
diff --git a/packages/integrations/vue/test/basics.test.js b/packages/integrations/vue/test/basics.test.js
index 4eb2b987c..d54ea66b6 100644
--- a/packages/integrations/vue/test/basics.test.js
+++ b/packages/integrations/vue/test/basics.test.js
@@ -30,4 +30,13 @@ describe('Basics', () => {
assert.notEqual(img, undefined);
assert.equal(img.getAttribute('src'), '/light_walrus.avif');
});
+
+ it('Should generate unique ids when using useId()', async () => {
+ const data = await fixture.readFile('/index.html');
+ const { document } = parseHTML(data);
+
+ const els = document.querySelectorAll('.vue-use-id');
+ assert.equal(els.length, 2);
+ assert.notEqual(els[0].getAttribute('id'), els[1].getAttribute('id'));
+ });
});
diff --git a/packages/integrations/vue/test/fixtures/basics/src/components/WithId.vue b/packages/integrations/vue/test/fixtures/basics/src/components/WithId.vue
new file mode 100644
index 000000000..2c8667696
--- /dev/null
+++ b/packages/integrations/vue/test/fixtures/basics/src/components/WithId.vue
@@ -0,0 +1,9 @@
+<script setup>
+import { useId } from "vue"
+
+const id = useId()
+</script>
+
+<template>
+ <p class="vue-use-id" :id="id">{{ id }}</p>
+</template> \ No newline at end of file
diff --git a/packages/integrations/vue/test/fixtures/basics/src/pages/index.astro b/packages/integrations/vue/test/fixtures/basics/src/pages/index.astro
index b2f292d10..162b326c8 100644
--- a/packages/integrations/vue/test/fixtures/basics/src/pages/index.astro
+++ b/packages/integrations/vue/test/fixtures/basics/src/pages/index.astro
@@ -1,6 +1,7 @@
---
import Bar from '../components/Foo.vue';
import Parent from '../components/Parent.astro';
+import WithId from '../components/WithId.vue';
---
<html>
<head>
@@ -10,5 +11,7 @@ import Parent from '../components/Parent.astro';
<Parent>
<Bar slot="footer" />
</Parent>
+ <WithId client:idle />
+ <WithId client:idle />
</body>
</html>