@sekiui/elements 0.0.54 → 0.0.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/cdn/seki-card-action.d.ts +11 -0
  2. package/dist/cdn/seki-card-action.js +38 -0
  3. package/dist/cdn/seki-card-content.d.ts +11 -0
  4. package/dist/cdn/seki-card-content.js +38 -0
  5. package/dist/cdn/seki-card-description.d.ts +11 -0
  6. package/dist/cdn/seki-card-description.js +38 -0
  7. package/dist/cdn/seki-card-footer.d.ts +11 -0
  8. package/dist/cdn/seki-card-footer.js +44 -0
  9. package/dist/cdn/seki-card-header.d.ts +11 -0
  10. package/dist/cdn/seki-card-header.js +38 -0
  11. package/dist/cdn/seki-card-title.d.ts +11 -0
  12. package/dist/cdn/seki-card-title.js +59 -0
  13. package/dist/cdn/seki-card.d.ts +11 -0
  14. package/dist/cdn/seki-card.js +39 -0
  15. package/dist/cdn/seki-field-description.js +1 -1
  16. package/dist/cdn/seki-field-error.js +1 -1
  17. package/dist/cdn/seki-field-group.js +1 -1
  18. package/dist/cdn/seki-field-label.js +1 -1
  19. package/dist/cdn/seki-field-legend.js +1 -1
  20. package/dist/cdn/seki-field.js +1 -1
  21. package/dist/cdn/seki-fieldset.js +1 -1
  22. package/dist/cdn/seki-input.js +1 -1
  23. package/dist/cdn/seki-select-group.js +1 -1
  24. package/dist/cdn/seki-select-option.js +1 -1
  25. package/dist/cdn/seki-select.js +1 -1
  26. package/dist/cdn/seki-skeleton.js +1 -1
  27. package/dist/cjs/loader.cjs.js +1 -1
  28. package/dist/cjs/seki-card-action.cjs.entry.js +17 -0
  29. package/dist/cjs/seki-card-content.cjs.entry.js +17 -0
  30. package/dist/cjs/seki-card-description.cjs.entry.js +17 -0
  31. package/dist/cjs/seki-card-footer.cjs.entry.js +22 -0
  32. package/dist/cjs/seki-card-header.cjs.entry.js +17 -0
  33. package/dist/cjs/seki-card-title.cjs.entry.js +37 -0
  34. package/dist/cjs/seki-card.cjs.entry.js +17 -0
  35. package/dist/cjs/seki-field-description.cjs.entry.js +1 -1
  36. package/dist/cjs/seki-field-error.cjs.entry.js +1 -1
  37. package/dist/cjs/seki-field-group.cjs.entry.js +1 -1
  38. package/dist/cjs/seki-field-label.cjs.entry.js +1 -1
  39. package/dist/cjs/seki-field-legend.cjs.entry.js +1 -1
  40. package/dist/cjs/seki-field.cjs.entry.js +1 -1
  41. package/dist/cjs/seki-fieldset.cjs.entry.js +1 -1
  42. package/dist/cjs/seki-input.cjs.entry.js +1 -1
  43. package/dist/cjs/seki-select-group.cjs.entry.js +1 -1
  44. package/dist/cjs/seki-select-option.cjs.entry.js +1 -1
  45. package/dist/cjs/seki-select.cjs.entry.js +1 -1
  46. package/dist/cjs/seki-skeleton.cjs.entry.js +1 -1
  47. package/dist/cjs/sekiui.cjs.js +1 -1
  48. package/dist/collection/collection-manifest.json +7 -0
  49. package/dist/collection/components/card/seki-card-action.js +50 -0
  50. package/dist/collection/components/card/seki-card-content.js +51 -0
  51. package/dist/collection/components/card/seki-card-description.js +48 -0
  52. package/dist/collection/components/card/seki-card-footer.js +83 -0
  53. package/dist/collection/components/card/seki-card-header.js +54 -0
  54. package/dist/collection/components/card/seki-card-title.js +95 -0
  55. package/dist/collection/components/card/seki-card.a11y.js +363 -0
  56. package/dist/collection/components/card/seki-card.css +608 -0
  57. package/dist/collection/components/card/seki-card.js +72 -0
  58. package/dist/collection/components/field/seki-field.js +1 -1
  59. package/dist/collection/components/field-description/seki-field-description.js +1 -1
  60. package/dist/collection/components/field-error/seki-field-error.js +1 -1
  61. package/dist/collection/components/field-group/seki-field-group.js +1 -1
  62. package/dist/collection/components/field-label/seki-field-label.js +1 -1
  63. package/dist/collection/components/field-legend/seki-field-legend.js +1 -1
  64. package/dist/collection/components/fieldset/seki-fieldset.js +1 -1
  65. package/dist/collection/components/input/seki-input.js +1 -1
  66. package/dist/collection/components/select/seki-select.js +1 -1
  67. package/dist/collection/components/select-group/seki-select-group.js +1 -1
  68. package/dist/collection/components/select-option/seki-select-option.js +1 -1
  69. package/dist/collection/components/skeleton/seki-skeleton.js +1 -1
  70. package/dist/components/seki-card-action.d.ts +11 -0
  71. package/dist/components/seki-card-action.js +38 -0
  72. package/dist/components/seki-card-content.d.ts +11 -0
  73. package/dist/components/seki-card-content.js +38 -0
  74. package/dist/components/seki-card-description.d.ts +11 -0
  75. package/dist/components/seki-card-description.js +38 -0
  76. package/dist/components/seki-card-footer.d.ts +11 -0
  77. package/dist/components/seki-card-footer.js +44 -0
  78. package/dist/components/seki-card-header.d.ts +11 -0
  79. package/dist/components/seki-card-header.js +38 -0
  80. package/dist/components/seki-card-title.d.ts +11 -0
  81. package/dist/components/seki-card-title.js +59 -0
  82. package/dist/components/seki-card.d.ts +11 -0
  83. package/dist/components/seki-card.js +39 -0
  84. package/dist/components/seki-field-description.js +1 -1
  85. package/dist/components/seki-field-error.js +1 -1
  86. package/dist/components/seki-field-group.js +1 -1
  87. package/dist/components/seki-field-label.js +1 -1
  88. package/dist/components/seki-field-legend.js +1 -1
  89. package/dist/components/seki-field.js +1 -1
  90. package/dist/components/seki-fieldset.js +1 -1
  91. package/dist/components/seki-input.js +1 -1
  92. package/dist/components/seki-select-group.js +1 -1
  93. package/dist/components/seki-select-option.js +1 -1
  94. package/dist/components/seki-select.js +1 -1
  95. package/dist/components/seki-skeleton.js +1 -1
  96. package/dist/esm/loader.js +1 -1
  97. package/dist/esm/seki-card-action.entry.js +15 -0
  98. package/dist/esm/seki-card-content.entry.js +15 -0
  99. package/dist/esm/seki-card-description.entry.js +15 -0
  100. package/dist/esm/seki-card-footer.entry.js +20 -0
  101. package/dist/esm/seki-card-header.entry.js +15 -0
  102. package/dist/esm/seki-card-title.entry.js +35 -0
  103. package/dist/esm/seki-card.entry.js +15 -0
  104. package/dist/esm/seki-field-description.entry.js +1 -1
  105. package/dist/esm/seki-field-error.entry.js +1 -1
  106. package/dist/esm/seki-field-group.entry.js +1 -1
  107. package/dist/esm/seki-field-label.entry.js +1 -1
  108. package/dist/esm/seki-field-legend.entry.js +1 -1
  109. package/dist/esm/seki-field.entry.js +1 -1
  110. package/dist/esm/seki-fieldset.entry.js +1 -1
  111. package/dist/esm/seki-input.entry.js +1 -1
  112. package/dist/esm/seki-select-group.entry.js +1 -1
  113. package/dist/esm/seki-select-option.entry.js +1 -1
  114. package/dist/esm/seki-select.entry.js +1 -1
  115. package/dist/esm/seki-skeleton.entry.js +1 -1
  116. package/dist/esm/sekiui.js +1 -1
  117. package/dist/sekiui/p-009183ab.entry.js +1 -0
  118. package/dist/sekiui/{p-de4735fb.entry.js → p-0544d787.entry.js} +1 -1
  119. package/dist/sekiui/{p-6ff91f7f.entry.js → p-1607dc4d.entry.js} +1 -1
  120. package/dist/sekiui/{p-434be19f.entry.js → p-35f8f9c4.entry.js} +1 -1
  121. package/dist/sekiui/{p-a36f1ac4.entry.js → p-3e088b5a.entry.js} +1 -1
  122. package/dist/sekiui/p-43f7c542.entry.js +1 -0
  123. package/dist/sekiui/p-4d57c6ea.entry.js +1 -0
  124. package/dist/sekiui/p-88f91658.entry.js +1 -0
  125. package/dist/sekiui/{p-431f46a1.entry.js → p-97e6e5ce.entry.js} +1 -1
  126. package/dist/sekiui/{p-e679d501.entry.js → p-9af5286b.entry.js} +1 -1
  127. package/dist/sekiui/{p-a56602b3.entry.js → p-b10d81a6.entry.js} +1 -1
  128. package/dist/sekiui/p-b22df79e.entry.js +1 -0
  129. package/dist/sekiui/{p-0fba4e2d.entry.js → p-b479935d.entry.js} +1 -1
  130. package/dist/sekiui/{p-80a41058.entry.js → p-cf11115c.entry.js} +1 -1
  131. package/dist/sekiui/{p-386c00ac.entry.js → p-d4c92041.entry.js} +1 -1
  132. package/dist/sekiui/{p-bf942ad5.entry.js → p-dd1e3e87.entry.js} +1 -1
  133. package/dist/sekiui/{p-7c2245be.entry.js → p-e71ad432.entry.js} +1 -1
  134. package/dist/sekiui/p-ed440425.entry.js +1 -0
  135. package/dist/sekiui/p-eedf44b5.entry.js +1 -0
  136. package/dist/sekiui/sekiui.esm.js +1 -1
  137. package/dist/types/components/card/seki-card-action.d.ts +16 -0
  138. package/dist/types/components/card/seki-card-content.d.ts +17 -0
  139. package/dist/types/components/card/seki-card-description.d.ts +14 -0
  140. package/dist/types/components/card/seki-card-footer.d.ts +24 -0
  141. package/dist/types/components/card/seki-card-header.d.ts +20 -0
  142. package/dist/types/components/card/seki-card-title.d.ts +20 -0
  143. package/dist/types/components/card/seki-card.a11y.d.ts +1 -0
  144. package/dist/types/components/card/seki-card.d.ts +23 -0
  145. package/dist/types/components.d.ts +391 -0
  146. package/package.json +1 -1
@@ -0,0 +1,363 @@
1
+ /* eslint-disable no-undef */
2
+ import { newE2EPage } from "@stencil/core/testing";
3
+ describe('Card Accessibility Tests', () => {
4
+ // ============================================
5
+ // Basic Accessibility Tests
6
+ // ============================================
7
+ it('Card with basic content renders accessibly', async () => {
8
+ const page = await newE2EPage();
9
+ await page.setContent(`
10
+ <seki-card>
11
+ <seki-card-content>This is a card with just content</seki-card-content>
12
+ </seki-card>
13
+ `);
14
+ const card = await page.find('seki-card');
15
+ expect(card).toBeTruthy();
16
+ });
17
+ it('Card with header and content renders accessibly', async () => {
18
+ const page = await newE2EPage();
19
+ await page.setContent(`
20
+ <seki-card>
21
+ <seki-card-header>
22
+ <seki-card-title>Card Title</seki-card-title>
23
+ </seki-card-header>
24
+ <seki-card-content>Main content area</seki-card-content>
25
+ </seki-card>
26
+ `);
27
+ const header = await page.find('seki-card-header');
28
+ const title = await page.find('seki-card-title');
29
+ expect(header).toBeTruthy();
30
+ expect(title).toBeTruthy();
31
+ });
32
+ it('Complete card with all sections renders accessibly', async () => {
33
+ const page = await newE2EPage();
34
+ await page.setContent(`
35
+ <seki-card>
36
+ <seki-card-header>
37
+ <seki-card-title>Card Title</seki-card-title>
38
+ <seki-card-description>Subtitle or description text</seki-card-description>
39
+ </seki-card-header>
40
+ <seki-card-content>This is the main content area</seki-card-content>
41
+ <seki-card-footer>
42
+ <button>Cancel</button>
43
+ <button>Submit</button>
44
+ </seki-card-footer>
45
+ </seki-card>
46
+ `);
47
+ const description = await page.find('seki-card-description');
48
+ const footer = await page.find('seki-card-footer');
49
+ expect(description).toBeTruthy();
50
+ expect(footer).toBeTruthy();
51
+ });
52
+ // ============================================
53
+ // Heading Hierarchy Tests
54
+ // ============================================
55
+ it('CardTitle renders h1 when level prop is h1', async () => {
56
+ const page = await newE2EPage();
57
+ await page.setContent(`<seki-card-title level="h1">Heading 1</seki-card-title>`);
58
+ const h1 = await page.find('h1');
59
+ expect(h1).toBeTruthy();
60
+ });
61
+ it('CardTitle renders h2 by default', async () => {
62
+ const page = await newE2EPage();
63
+ await page.setContent(`<seki-card-title>Default Heading</seki-card-title>`);
64
+ const h2 = await page.find('h2');
65
+ expect(h2).toBeTruthy();
66
+ });
67
+ it('CardTitle renders h3 when level prop is h3', async () => {
68
+ const page = await newE2EPage();
69
+ await page.setContent(`<seki-card-title level="h3">Heading 3</seki-card-title>`);
70
+ const h3 = await page.find('h3');
71
+ expect(h3).toBeTruthy();
72
+ });
73
+ it('CardTitle renders h4 when level prop is h4', async () => {
74
+ const page = await newE2EPage();
75
+ await page.setContent(`<seki-card-title level="h4">Heading 4</seki-card-title>`);
76
+ const h4 = await page.find('h4');
77
+ expect(h4).toBeTruthy();
78
+ });
79
+ it('CardTitle renders h5 when level prop is h5', async () => {
80
+ const page = await newE2EPage();
81
+ await page.setContent(`<seki-card-title level="h5">Heading 5</seki-card-title>`);
82
+ const h5 = await page.find('h5');
83
+ expect(h5).toBeTruthy();
84
+ });
85
+ it('CardTitle renders h6 when level prop is h6', async () => {
86
+ const page = await newE2EPage();
87
+ await page.setContent(`<seki-card-title level="h6">Heading 6</seki-card-title>`);
88
+ const h6 = await page.find('h6');
89
+ expect(h6).toBeTruthy();
90
+ });
91
+ // ============================================
92
+ // Semantic HTML Tests
93
+ // ============================================
94
+ it('Card uses semantic section element', async () => {
95
+ const page = await newE2EPage();
96
+ await page.setContent(`
97
+ <seki-card>
98
+ <seki-card-content>Content</seki-card-content>
99
+ </seki-card>
100
+ `);
101
+ const section = await page.find('seki-card >>> section');
102
+ expect(section).toBeTruthy();
103
+ });
104
+ it('CardHeader uses semantic header element', async () => {
105
+ const page = await newE2EPage();
106
+ await page.setContent(`
107
+ <seki-card-header>
108
+ <seki-card-title>Title</seki-card-title>
109
+ </seki-card-header>
110
+ `);
111
+ const header = await page.find('seki-card-header >>> header');
112
+ expect(header).toBeTruthy();
113
+ });
114
+ it('CardDescription uses semantic paragraph element', async () => {
115
+ const page = await newE2EPage();
116
+ await page.setContent(`<seki-card-description>Description</seki-card-description>`);
117
+ const paragraph = await page.find('seki-card-description >>> p');
118
+ expect(paragraph).toBeTruthy();
119
+ });
120
+ it('CardFooter uses semantic footer element', async () => {
121
+ const page = await newE2EPage();
122
+ await page.setContent(`
123
+ <seki-card-footer>
124
+ <button>Submit</button>
125
+ </seki-card-footer>
126
+ `);
127
+ const footer = await page.find('seki-card-footer >>> footer');
128
+ expect(footer).toBeTruthy();
129
+ });
130
+ it('CardAction uses semantic toolbar role', async () => {
131
+ const page = await newE2EPage();
132
+ await page.setContent(`
133
+ <seki-card-action>
134
+ <button>Menu</button>
135
+ </seki-card-action>
136
+ `);
137
+ const toolbar = await page.find('seki-card-action >>> [role="toolbar"]');
138
+ expect(toolbar).toBeTruthy();
139
+ });
140
+ // ============================================
141
+ // Focus Management Tests
142
+ // ============================================
143
+ it('Card buttons are keyboard focusable', async () => {
144
+ const page = await newE2EPage();
145
+ await page.setContent(`
146
+ <seki-card>
147
+ <seki-card-footer>
148
+ <button id="btn1">Cancel</button>
149
+ <button id="btn2">Submit</button>
150
+ </seki-card-footer>
151
+ </seki-card>
152
+ `);
153
+ const btn1 = await page.find('#btn1');
154
+ await btn1.focus();
155
+ const focused = await page.evaluate(() => { var _a; return (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.id; });
156
+ expect(focused).toBe('btn1');
157
+ });
158
+ it('Card does not trap focus - allows tabbing out', async () => {
159
+ const page = await newE2EPage();
160
+ await page.setContent(`
161
+ <button id="before">Before Card</button>
162
+ <seki-card>
163
+ <seki-card-footer>
164
+ <button id="inside">Inside Card</button>
165
+ </seki-card-footer>
166
+ </seki-card>
167
+ <button id="after">After Card</button>
168
+ `);
169
+ const beforeBtn = await page.find('#before');
170
+ const afterBtn = await page.find('#after');
171
+ expect(beforeBtn).toBeTruthy();
172
+ expect(afterBtn).toBeTruthy();
173
+ });
174
+ // ============================================
175
+ // Form Input Accessibility Tests
176
+ // ============================================
177
+ it('Card with form inputs has proper structure', async () => {
178
+ const page = await newE2EPage();
179
+ await page.setContent(`
180
+ <seki-card>
181
+ <seki-card-header>
182
+ <seki-card-title>Login Form</seki-card-title>
183
+ </seki-card-header>
184
+ <seki-card-content>
185
+ <form>
186
+ <div>
187
+ <label for="email">Email:</label>
188
+ <input type="email" id="email" placeholder="you@example.com" />
189
+ </div>
190
+ <div>
191
+ <label for="password">Password:</label>
192
+ <input type="password" id="password" placeholder="••••••••" />
193
+ </div>
194
+ </form>
195
+ </seki-card-content>
196
+ <seki-card-footer>
197
+ <button type="submit">Sign In</button>
198
+ </seki-card-footer>
199
+ </seki-card>
200
+ `);
201
+ const email = await page.find('#email');
202
+ const password = await page.find('#password');
203
+ expect(email).toBeTruthy();
204
+ expect(password).toBeTruthy();
205
+ });
206
+ it('Form labels are properly associated with inputs', async () => {
207
+ const page = await newE2EPage();
208
+ await page.setContent(`
209
+ <seki-card-content>
210
+ <label for="username">Username:</label>
211
+ <input type="text" id="username" />
212
+ </seki-card-content>
213
+ `);
214
+ const label = await page.find('label');
215
+ const htmlFor = await label.getAttribute('for');
216
+ expect(htmlFor).toBe('username');
217
+ });
218
+ // ============================================
219
+ // Image and Media Tests
220
+ // ============================================
221
+ it('Images in card have alt text', async () => {
222
+ const page = await newE2EPage();
223
+ await page.setContent(`
224
+ <seki-card>
225
+ <seki-card-content>
226
+ <img src="test.jpg" alt="Test image description" />
227
+ </seki-card-content>
228
+ </seki-card>
229
+ `);
230
+ const img = await page.find('img');
231
+ const alt = await img.getAttribute('alt');
232
+ expect(alt).toBeTruthy();
233
+ });
234
+ // ============================================
235
+ // Links and Navigation Tests
236
+ // ============================================
237
+ it('Links in card are properly marked', async () => {
238
+ const page = await newE2EPage();
239
+ await page.setContent(`
240
+ <seki-card>
241
+ <seki-card-content>
242
+ <p>
243
+ <a href="#forgot">Forgot your password?</a>
244
+ </p>
245
+ </seki-card-content>
246
+ </seki-card>
247
+ `);
248
+ const link = await page.find('a');
249
+ const href = await link.getAttribute('href');
250
+ expect(href).toBe('#forgot');
251
+ });
252
+ // ============================================
253
+ // List Content Tests
254
+ // ============================================
255
+ it('Lists in card use proper semantic markup', async () => {
256
+ const page = await newE2EPage();
257
+ await page.setContent(`
258
+ <seki-card>
259
+ <seki-card-content>
260
+ <ul>
261
+ <li>Item 1</li>
262
+ <li>Item 2</li>
263
+ <li>Item 3</li>
264
+ </ul>
265
+ </seki-card-content>
266
+ </seki-card>
267
+ `);
268
+ const list = await page.find('ul');
269
+ const items = await page.findAll('li');
270
+ expect(list).toBeTruthy();
271
+ expect(items.length).toBe(3);
272
+ });
273
+ // ============================================
274
+ // Color Contrast Tests (Light Mode)
275
+ // ============================================
276
+ it('Card text is visible with light mode default colors', async () => {
277
+ const page = await newE2EPage();
278
+ await page.setContent(`
279
+ <seki-card>
280
+ <seki-card-header>
281
+ <seki-card-title>Title Text</seki-card-title>
282
+ <seki-card-description>Description text</seki-card-description>
283
+ </seki-card-header>
284
+ <seki-card-content>Body content with default color</seki-card-content>
285
+ </seki-card>
286
+ `);
287
+ const title = await page.find('seki-card-title');
288
+ const description = await page.find('seki-card-description');
289
+ const content = await page.find('seki-card-content');
290
+ expect(title).toBeTruthy();
291
+ expect(description).toBeTruthy();
292
+ expect(content).toBeTruthy();
293
+ });
294
+ // ============================================
295
+ // Color Contrast Tests (Dark Mode)
296
+ // ============================================
297
+ it('Card text is visible in dark mode', async () => {
298
+ const page = await newE2EPage();
299
+ await page.setContent(`
300
+ <div data-theme="dark" style="background: #111; padding: 1rem;">
301
+ <seki-card>
302
+ <seki-card-header>
303
+ <seki-card-title>Dark Mode Title</seki-card-title>
304
+ <seki-card-description>Dark mode description</seki-card-description>
305
+ </seki-card-header>
306
+ <seki-card-content>Dark mode content text</seki-card-content>
307
+ </seki-card>
308
+ </div>
309
+ `);
310
+ const themeDiv = await page.find('[data-theme="dark"]');
311
+ const card = await page.find('seki-card');
312
+ expect(themeDiv).toBeTruthy();
313
+ expect(card).toBeTruthy();
314
+ });
315
+ // ============================================
316
+ // Responsive Accessibility Tests
317
+ // ============================================
318
+ it('Card is accessible on mobile viewport', async () => {
319
+ const page = await newE2EPage();
320
+ await page.setViewport({ width: 320, height: 640 });
321
+ await page.setContent(`
322
+ <seki-card>
323
+ <seki-card-header>
324
+ <seki-card-title>Mobile Card</seki-card-title>
325
+ </seki-card-header>
326
+ <seki-card-content>Mobile viewport content</seki-card-content>
327
+ </seki-card>
328
+ `);
329
+ const card = await page.find('seki-card');
330
+ expect(card).toBeTruthy();
331
+ });
332
+ it('Card is accessible on tablet viewport', async () => {
333
+ const page = await newE2EPage();
334
+ await page.setViewport({ width: 768, height: 1024 });
335
+ await page.setContent(`
336
+ <seki-card>
337
+ <seki-card-header>
338
+ <seki-card-title>Tablet Card</seki-card-title>
339
+ </seki-card-header>
340
+ <seki-card-content>Tablet viewport content</seki-card-content>
341
+ </seki-card>
342
+ `);
343
+ const card = await page.find('seki-card');
344
+ expect(card).toBeTruthy();
345
+ });
346
+ it('Card is accessible on desktop viewport', async () => {
347
+ const page = await newE2EPage();
348
+ await page.setViewport({ width: 1440, height: 900 });
349
+ await page.setContent(`
350
+ <seki-card>
351
+ <seki-card-header>
352
+ <seki-card-title>Desktop Card</seki-card-title>
353
+ </seki-card-header>
354
+ <seki-card-content>Desktop viewport content</seki-card-content>
355
+ <seki-card-footer>
356
+ <button>Action</button>
357
+ </seki-card-footer>
358
+ </seki-card>
359
+ `);
360
+ const card = await page.find('seki-card');
361
+ expect(card).toBeTruthy();
362
+ });
363
+ });