@smileid/web-components 1.0.0-beta

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 (73) hide show
  1. package/.eslintrc.cjs +72 -0
  2. package/components/README.md +14 -0
  3. package/components/attribution/PoweredBySmileId.js +42 -0
  4. package/components/camera-permission/CameraPermission.js +136 -0
  5. package/components/camera-permission/CameraPermission.stories.js +21 -0
  6. package/components/combobox/src/Combobox.js +586 -0
  7. package/components/combobox/src/index.js +1 -0
  8. package/components/document/src/DocumentCaptureScreens.js +317 -0
  9. package/components/document/src/DocumentCaptureScreens.stories.js +51 -0
  10. package/components/document/src/README.md +108 -0
  11. package/components/document/src/document-capture/DocumentCapture.js +677 -0
  12. package/components/document/src/document-capture/DocumentCapture.stories.js +71 -0
  13. package/components/document/src/document-capture/README.md +89 -0
  14. package/components/document/src/document-capture/index.js +3 -0
  15. package/components/document/src/document-capture-instructions/DocumentCaptureInstructions.js +499 -0
  16. package/components/document/src/document-capture-instructions/DocumentCaptureInstructions.stories.js +17 -0
  17. package/components/document/src/document-capture-instructions/README.md +56 -0
  18. package/components/document/src/document-capture-instructions/index.js +3 -0
  19. package/components/document/src/document-capture-review/DocumentCaptureReview.js +378 -0
  20. package/components/document/src/document-capture-review/DocumentCaptureReview.stories.js +14 -0
  21. package/components/document/src/document-capture-review/README.md +79 -0
  22. package/components/document/src/document-capture-review/index.js +3 -0
  23. package/components/document/src/index.js +3 -0
  24. package/components/end-user-consent/src/EndUserConsent.js +809 -0
  25. package/components/end-user-consent/src/EndUserConsent.stories.js +23 -0
  26. package/components/end-user-consent/src/index.js +4 -0
  27. package/components/navigation/src/Navigation.js +160 -0
  28. package/components/navigation/src/Navigation.stories.js +24 -0
  29. package/components/navigation/src/index.js +3 -0
  30. package/components/selfie/README.md +201 -0
  31. package/components/selfie/src/SelfieCaptureScreens.js +224 -0
  32. package/components/selfie/src/SelfieCaptureScreens.stories.js +21 -0
  33. package/components/selfie/src/index.js +5 -0
  34. package/components/selfie/src/selfie-capture/SelfieCapture.js +878 -0
  35. package/components/selfie/src/selfie-capture/SelfieCapture.stories.js +23 -0
  36. package/components/selfie/src/selfie-capture/index.js +3 -0
  37. package/components/selfie/src/selfie-capture-instructions/SelfieCaptureInstructions.js +638 -0
  38. package/components/selfie/src/selfie-capture-instructions/SelfieCaptureInstructions.stories.js +17 -0
  39. package/components/selfie/src/selfie-capture-instructions/index.js +3 -0
  40. package/components/selfie/src/selfie-capture-review/SelfieCaptureReview.js +348 -0
  41. package/components/selfie/src/selfie-capture-review/SelfieCaptureReview.stories.js +17 -0
  42. package/components/selfie/src/selfie-capture-review/index.js +3 -0
  43. package/components/signature-pad/package.json +30 -0
  44. package/components/signature-pad/src/SignaturePad.js +477 -0
  45. package/components/signature-pad/src/SignaturePad.stories.js +24 -0
  46. package/components/signature-pad/src/index.js +3 -0
  47. package/components/smart-camera-web/src/SmartCameraWeb.js +246 -0
  48. package/components/smart-camera-web/src/SmartCameraWeb.stories.js +35 -0
  49. package/components/totp-consent/src/TotpConsent.js +935 -0
  50. package/components/totp-consent/src/index.js +4 -0
  51. package/cypress/e2e/smart-camera-web-attribution.cy.js +21 -0
  52. package/cypress/e2e/smart-camera-web-back-press.cy.js +481 -0
  53. package/cypress/e2e/smart-camera-web-hide-instructions.cy.js +334 -0
  54. package/cypress/e2e/smart-camera-web.cy.js +309 -0
  55. package/cypress/fixtures/example.json +5 -0
  56. package/cypress/pages/capture-back-of-id-hide-attribution.html +44 -0
  57. package/cypress/pages/capture-back-of-id-navigation.html +72 -0
  58. package/cypress/pages/smart-camera-web-hide-instructions.html +38 -0
  59. package/cypress/pages/smart-camera-web.html +38 -0
  60. package/cypress/support/commands.js +144 -0
  61. package/cypress/support/e2e.js +20 -0
  62. package/cypress.config.js +11 -0
  63. package/domain/camera/src/README.md +38 -0
  64. package/domain/camera/src/SmartCamera.js +81 -0
  65. package/domain/constants/src/Constants.js +27 -0
  66. package/domain/file-upload/README.md +35 -0
  67. package/domain/file-upload/src/SmartFileUpload.js +65 -0
  68. package/esbuild.js +119 -0
  69. package/index.js +5 -0
  70. package/package.json +46 -0
  71. package/styles/README.md +3 -0
  72. package/styles/src/styles.js +348 -0
  73. package/styles/src/typography.js +52 -0
@@ -0,0 +1,4 @@
1
+ export {
2
+ // eslint-disable-next-line import/prefer-default-export
3
+ TotpConsent,
4
+ } from './TotpConsent';
@@ -0,0 +1,21 @@
1
+ describe('SmartCameraWeb', () => {
2
+ it('shows attribution by default', () => {
3
+ cy.visit('/smart-camera-web');
4
+ cy.get('smart-camera-web')
5
+ .shadow()
6
+ .find('selfie-capture-instructions')
7
+ .shadow()
8
+ .find('powered-by-smile-id')
9
+ .should('be.visible');
10
+ });
11
+
12
+ it.only('hides attribution when `hide-attribution` attribute is passed', () => {
13
+ cy.visit('/capture-back-of-id-hide-attribution');
14
+ cy.get('smart-camera-web')
15
+ .shadow()
16
+ .find('selfie-capture-instructions')
17
+ .shadow()
18
+ .get('powered-by-smile-id')
19
+ .should('not.exist');
20
+ });
21
+ });
@@ -0,0 +1,481 @@
1
+ // smart-camera-web.spec.js created with Cypress
2
+ //
3
+ // Start writing your Cypress tests below!
4
+ // If you're unfamiliar with how Cypress works,
5
+ // check out the link below and learn how to write your first test:
6
+ // https://on.cypress.io/writing-first-test
7
+
8
+ context('SmartCameraWeb', () => {
9
+ beforeEach(() => {
10
+ cy.visit('/capture-back-of-id-navigation');
11
+ });
12
+
13
+ it('should start from the instructions screen', () => {
14
+ cy.get('smart-camera-web')
15
+ .shadow()
16
+ .find('selfie-capture-instructions')
17
+ .should('be.visible');
18
+ cy.get('smart-camera-web')
19
+ .shadow()
20
+ .find('selfie-capture-instructions')
21
+ .shadow()
22
+ .should('contain.text', "Next, we'll take a quick selfie");
23
+ cy.get('smart-camera-web')
24
+ .shadow()
25
+ .find('selfie-capture-instructions')
26
+ .shadow()
27
+ .find('smileid-navigation')
28
+ .shadow()
29
+ .find('.back-button')
30
+ .should('be.visible');
31
+ });
32
+
33
+ it('should navigate to "back_pressed" when back button on request page button is pressed', () => {
34
+ cy.get('smart-camera-web')
35
+ .shadow()
36
+ .find('selfie-capture-instructions')
37
+ .should('be.visible');
38
+ cy.get('smart-camera-web')
39
+ .shadow()
40
+ .find('selfie-capture-instructions')
41
+ .shadow()
42
+ .should('contain.text', "Next, we'll take a quick selfie");
43
+ cy.get('smart-camera-web')
44
+ .shadow()
45
+ .find('selfie-capture-instructions')
46
+ .shadow()
47
+ .find('smileid-navigation')
48
+ .shadow()
49
+ .find('.back-button')
50
+ .click();
51
+
52
+ cy.location('pathname').should('eq', '/back_pressed');
53
+ });
54
+
55
+ it('should navigate to "back_pressed" when back button is pressed in selfie camera screen', () => {
56
+ cy.get('smart-camera-web')
57
+ .shadow()
58
+ .find('selfie-capture-instructions')
59
+ .shadow()
60
+ .find('#allow')
61
+ .click();
62
+
63
+ cy.get('smart-camera-web')
64
+ .shadow()
65
+ .find('selfie-capture-instructions')
66
+ .should('not.be.visible');
67
+
68
+ cy.get('smart-camera-web')
69
+ .shadow()
70
+ .find('selfie-capture')
71
+ .should('be.visible');
72
+ cy.get('smart-camera-web')
73
+ .shadow()
74
+ .find('selfie-capture')
75
+ .shadow()
76
+ .should('contain.text', 'Take a Selfie');
77
+
78
+ cy.get('smart-camera-web')
79
+ .shadow()
80
+ .find('selfie-capture')
81
+ .shadow()
82
+ .find('smileid-navigation')
83
+ .shadow()
84
+ .find('.back-button')
85
+ .click();
86
+
87
+ cy.get('smart-camera-web')
88
+ .shadow()
89
+ .find('selfie-capture')
90
+ .shadow()
91
+ .should('not.be.visible');
92
+
93
+ cy.get('smart-camera-web')
94
+ .shadow()
95
+ .find('selfie-capture-instructions')
96
+ .should('be.visible');
97
+ });
98
+
99
+ it('should switch from the idEntryScreen to the selfieScreen on clicking the back button', () => {
100
+ cy.navigateFaceCaptureScreens();
101
+
102
+ cy.get('smart-camera-web')
103
+ .shadow()
104
+ .find('document-capture-instructions')
105
+ .should('be.visible');
106
+
107
+ cy.get('smart-camera-web')
108
+ .shadow()
109
+ .find('document-capture-instructions#document-capture-instructions-front')
110
+ .shadow()
111
+ .find('smileid-navigation')
112
+ .shadow()
113
+ .find('.back-button')
114
+ .click();
115
+
116
+ cy.get('smart-camera-web')
117
+ .shadow()
118
+ .find('document-capture-instructions')
119
+ .should('not.be.visible');
120
+
121
+ cy.get('smart-camera-web')
122
+ .shadow()
123
+ .find('selfie-capture')
124
+ .should('be.visible');
125
+ });
126
+
127
+ it('should switch from the idCameraScreen to the idEntryScreen on clicking the "back" button', () => {
128
+ cy.navigateFaceCaptureScreens();
129
+
130
+ cy.get('smart-camera-web')
131
+ .shadow()
132
+ .find('document-capture-instructions')
133
+ .should('be.visible');
134
+
135
+ cy.get('smart-camera-web')
136
+ .shadow()
137
+ .find('document-capture-instructions#document-capture-instructions-front')
138
+ .shadow()
139
+ .find('#take-photo')
140
+ .click();
141
+
142
+ cy.get('smart-camera-web')
143
+ .shadow()
144
+ .find('document-capture-instructions#document-capture-instructions-front')
145
+ .should('not.be.visible');
146
+
147
+ cy.get('smart-camera-web')
148
+ .shadow()
149
+ .find('document-capture#document-capture-front')
150
+ .should('be.visible');
151
+
152
+ cy.get('smart-camera-web')
153
+ .shadow()
154
+ .find('document-capture#document-capture-front')
155
+ .shadow()
156
+ .find('smileid-navigation')
157
+ .shadow()
158
+ .find('.back-button')
159
+ .click();
160
+
161
+ cy.get('smart-camera-web')
162
+ .shadow()
163
+ .find('document-capture#document-capture-front')
164
+ .should('not.be.visible');
165
+ cy.get('smart-camera-web')
166
+ .shadow()
167
+ .find('document-capture-instructions#document-capture-instructions-front')
168
+ .should('be.visible');
169
+ });
170
+
171
+ it('should switch from the idBackEntryScreen to the idFrontEntryScreen on clicking the "back" button', () => {
172
+ cy.navigateFaceCaptureScreens();
173
+ cy.navigateDocumentFrontCaptureWithInstructions();
174
+ });
175
+
176
+ it('should switch from the backOfIdCameraScreen to the backOfIdEntryScreen on clicking the "back" button', () => {
177
+ cy.navigateFaceCaptureScreens();
178
+
179
+ cy.navigateDocumentFrontCaptureWithInstructions();
180
+
181
+ cy.get('smart-camera-web')
182
+ .shadow()
183
+ .find('document-capture-instructions#document-capture-instructions-back')
184
+ .shadow()
185
+ .find('#take-photo')
186
+ .click();
187
+
188
+ cy.get('smart-camera-web')
189
+ .shadow()
190
+ .find('document-capture-instructions#document-capture-instructions-back')
191
+ .should('not.be.visible');
192
+
193
+ cy.get('smart-camera-web')
194
+ .shadow()
195
+ .find('document-capture#document-capture-back')
196
+ .should('be.visible');
197
+
198
+ cy.get('smart-camera-web')
199
+ .shadow()
200
+ .find('document-capture#document-capture-back')
201
+ .shadow()
202
+ .find('smileid-navigation')
203
+ .shadow()
204
+ .find('.back-button')
205
+ .click();
206
+
207
+ cy.get('smart-camera-web')
208
+ .shadow()
209
+ .find('document-capture#document-capture-back')
210
+ .should('not.be.visible');
211
+
212
+ cy.get('smart-camera-web')
213
+ .shadow()
214
+ .find('document-capture-instructions#document-capture-instructions-back')
215
+ .should('be.visible');
216
+ });
217
+
218
+ it('should navigate to "closed" when close button is pressed in selfie instruction screen', () => {
219
+ cy.get('smart-camera-web')
220
+ .shadow()
221
+ .find('selfie-capture-instructions')
222
+ .shadow()
223
+ .find('smileid-navigation')
224
+ .shadow()
225
+ .find('.close-button')
226
+ .click();
227
+
228
+ cy.exitScreens();
229
+ });
230
+
231
+ it('should navigate to "closed" when close button is pressed in selfie screen', () => {
232
+ cy.get('smart-camera-web')
233
+ .shadow()
234
+ .find('selfie-capture-instructions')
235
+ .shadow()
236
+ .find('#allow')
237
+ .click();
238
+ cy.get('smart-camera-web')
239
+ .shadow()
240
+ .find('selfie-capture')
241
+ .should('be.visible');
242
+ cy.get('smart-camera-web')
243
+ .shadow()
244
+ .find('selfie-capture')
245
+ .shadow()
246
+ .find('smileid-navigation')
247
+ .shadow()
248
+ .find('.close-button')
249
+ .click();
250
+
251
+ cy.exitScreens();
252
+ });
253
+
254
+ it('should navigate to "closed" when close button is pressed in selfie review screen', () => {
255
+ cy.clock();
256
+ cy.get('smart-camera-web')
257
+ .shadow()
258
+ .find('selfie-capture-instructions')
259
+ .shadow()
260
+ .find('#allow')
261
+ .click();
262
+ cy.get('smart-camera-web')
263
+ .shadow()
264
+ .find('selfie-capture')
265
+ .shadow()
266
+ .should('contain.text', 'Take a Selfie');
267
+ cy.get('smart-camera-web')
268
+ .shadow()
269
+ .find('selfie-capture')
270
+ .shadow()
271
+ .find('#start-image-capture')
272
+ .click();
273
+ cy.tick(8000);
274
+ cy.get('smart-camera-web')
275
+ .shadow()
276
+ .find('selfie-capture')
277
+ .shadow()
278
+ .should('not.be.visible');
279
+ cy.get('smart-camera-web')
280
+ .shadow()
281
+ .find('selfie-capture-review')
282
+ .should('be.visible');
283
+ cy.get('smart-camera-web')
284
+ .shadow()
285
+ .find('selfie-capture-review')
286
+ .shadow()
287
+ .find('smileid-navigation')
288
+ .shadow()
289
+ .find('.close-button')
290
+ .click();
291
+
292
+ cy.exitScreens();
293
+ });
294
+
295
+ it('should navigate to "closed" when close button is pressed in front document instructions screen', () => {
296
+ cy.navigateFaceCaptureScreens();
297
+ cy.get('smart-camera-web')
298
+ .shadow()
299
+ .find('document-capture-instructions#document-capture-instructions-front')
300
+ .shadow()
301
+ .find('smileid-navigation')
302
+ .shadow()
303
+ .find('.close-button')
304
+ .click();
305
+ cy.exitScreens();
306
+ });
307
+
308
+ it('should navigate to "closed" when close button is pressed in front document camera screen', () => {
309
+ cy.navigateFaceCaptureScreens();
310
+ cy.get('smart-camera-web')
311
+ .shadow()
312
+ .find('document-capture-instructions#document-capture-instructions-front')
313
+ .shadow()
314
+ .find('#take-photo')
315
+ .click();
316
+
317
+ cy.get('smart-camera-web')
318
+ .shadow()
319
+ .find('document-capture#document-capture-front')
320
+ .shadow()
321
+ .find('smileid-navigation')
322
+ .shadow()
323
+ .find('.close-button')
324
+ .click();
325
+
326
+ cy.exitScreens();
327
+ });
328
+
329
+ it('should navigate to "closed" when close button is pressed in front document review screen', () => {
330
+ cy.navigateFaceCaptureScreens();
331
+ cy.get('smart-camera-web')
332
+ .shadow()
333
+ .find('document-capture-instructions#document-capture-instructions-front')
334
+ .shadow()
335
+ .find('#take-photo')
336
+ .click();
337
+
338
+ cy.get('smart-camera-web')
339
+ .shadow()
340
+ .find('document-capture#document-capture-front')
341
+ .shadow()
342
+ .find('#capture-id-image')
343
+ .click();
344
+
345
+ cy.get('smart-camera-web')
346
+ .shadow()
347
+ .find('document-capture-review#front-of-document-capture-review')
348
+ .shadow()
349
+ .find('smileid-navigation')
350
+ .shadow()
351
+ .find('.close-button')
352
+ .click();
353
+
354
+ cy.exitScreens();
355
+ });
356
+
357
+ it('should navigate to "closed" when close button is pressed in back document instructions screen', () => {
358
+ cy.navigateFaceCaptureScreens();
359
+ cy.get('smart-camera-web')
360
+ .shadow()
361
+ .find('document-capture-instructions#document-capture-instructions-front')
362
+ .shadow()
363
+ .find('#take-photo')
364
+ .click();
365
+
366
+ cy.get('smart-camera-web')
367
+ .shadow()
368
+ .find('document-capture#document-capture-front')
369
+ .shadow()
370
+ .find('#capture-id-image')
371
+ .click();
372
+
373
+ cy.get('smart-camera-web')
374
+ .shadow()
375
+ .find('document-capture-review#front-of-document-capture-review')
376
+ .shadow()
377
+ .find('#select-id-image')
378
+ .click();
379
+
380
+ cy.get('smart-camera-web')
381
+ .shadow()
382
+ .find('document-capture-instructions#document-capture-instructions-back')
383
+ .shadow()
384
+ .find('smileid-navigation')
385
+ .shadow()
386
+ .find('.close-button')
387
+ .click();
388
+
389
+ cy.exitScreens();
390
+ });
391
+
392
+ it('should navigate to "closed" when close button is pressed in back document camera screen', () => {
393
+ cy.navigateFaceCaptureScreens();
394
+ cy.get('smart-camera-web')
395
+ .shadow()
396
+ .find('document-capture-instructions#document-capture-instructions-front')
397
+ .shadow()
398
+ .find('#take-photo')
399
+ .click();
400
+
401
+ cy.get('smart-camera-web')
402
+ .shadow()
403
+ .find('document-capture#document-capture-front')
404
+ .shadow()
405
+ .find('#capture-id-image')
406
+ .click();
407
+
408
+ cy.get('smart-camera-web')
409
+ .shadow()
410
+ .find('document-capture-review#front-of-document-capture-review')
411
+ .shadow()
412
+ .find('#select-id-image')
413
+ .click();
414
+
415
+ cy.get('smart-camera-web')
416
+ .shadow()
417
+ .find('document-capture-instructions#document-capture-instructions-back')
418
+ .shadow()
419
+ .find('#take-photo')
420
+ .click();
421
+ cy.get('smart-camera-web')
422
+ .shadow()
423
+ .find('document-capture#document-capture-back')
424
+ .shadow()
425
+ .find('smileid-navigation')
426
+ .shadow()
427
+ .find('.close-button')
428
+ .click();
429
+
430
+ cy.exitScreens();
431
+ });
432
+
433
+ it('should navigate to "closed" when close button is pressed in id back review screen', () => {
434
+ cy.navigateFaceCaptureScreens();
435
+ cy.get('smart-camera-web')
436
+ .shadow()
437
+ .find('document-capture-instructions#document-capture-instructions-front')
438
+ .shadow()
439
+ .find('#take-photo')
440
+ .click();
441
+
442
+ cy.get('smart-camera-web')
443
+ .shadow()
444
+ .find('document-capture#document-capture-front')
445
+ .shadow()
446
+ .find('#capture-id-image')
447
+ .click();
448
+
449
+ cy.get('smart-camera-web')
450
+ .shadow()
451
+ .find('document-capture-review#front-of-document-capture-review')
452
+ .shadow()
453
+ .find('#select-id-image')
454
+ .click();
455
+
456
+ cy.get('smart-camera-web')
457
+ .shadow()
458
+ .find('document-capture-instructions#document-capture-instructions-back')
459
+ .shadow()
460
+ .find('#take-photo')
461
+ .click();
462
+
463
+ cy.get('smart-camera-web')
464
+ .shadow()
465
+ .find('document-capture#document-capture-back')
466
+ .shadow()
467
+ .find('#capture-id-image')
468
+ .click();
469
+
470
+ cy.get('smart-camera-web')
471
+ .shadow()
472
+ .find('document-capture-review#back-of-document-capture-review')
473
+ .shadow()
474
+ .find('smileid-navigation')
475
+ .shadow()
476
+ .find('.close-button')
477
+ .click();
478
+
479
+ cy.exitScreens();
480
+ });
481
+ });