forked from microsoft/BotFramework-WebChat
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdisableFileUpload.html
More file actions
86 lines (73 loc) · 3.38 KB
/
disableFileUpload.html
File metadata and controls
86 lines (73 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<!doctype html>
<html lang="en-US">
<head>
<title>Disable file upload</title>
<link href="/assets/index.css" rel="stylesheet" type="text/css" />
<script crossorigin="anonymous" src="https://unpkg.com/@babel/standalone@7.8.7/babel.min.js"></script>
<script crossorigin="anonymous" src="https://unpkg.com/react@16.8.6/umd/react.production.min.js"></script>
<script crossorigin="anonymous" src="https://unpkg.com/react-dom@16.8.6/umd/react-dom.production.min.js"></script>
<script crossorigin="anonymous" src="/test-harness.js"></script>
<script crossorigin="anonymous" src="/test-page-object.js"></script>
<script crossorigin="anonymous" src="/__dist__/webchat-es5.js"></script>
<script crossorigin="anonymous" src="/__dist__/botframework-webchat-fluent-theme.production.min.js"></script>
</head>
<body>
<main id="webchat"></main>
<script>
run(async function () {
const { directLine, store } = testHelpers.createDirectLineEmulator();
const disableFileUpload = new URLSearchParams(location.search || '').get('disableFileUpload') !== 'false';
const { isFluentTheme } = renderWebChat(
{
directLine,
store,
styleOptions: { disableFileUpload }
},
document.getElementById('webchat')
);
await pageConditions.uiConnected();
// DOM-based checks
if (disableFileUpload) {
expect(pageElements.byTestId(WebChat.testIds.sendBoxUploadButton)).toBeFalsy();
expect(pageElements.byTestId(WebChat.testIds.sendBoxDropZone)).toBeFalsy();
} else {
expect(pageElements.byTestId(WebChat.testIds.sendBoxUploadButton)).toBeDefined();
expect(pageElements.byTestId(WebChat.testIds.sendBoxDropZone)).toBeDefined();
}
// Keyboard interaction: try to tab to the upload button
await pageObjects.focusSendBoxTextBox();
await host.sendTab();
if (disableFileUpload) {
expect(document.activeElement).not.toBe(pageElements.byTestId(WebChat.testIds.sendBoxUploadButton));
} else {
expect(document.activeElement).toBe(pageElements.byTestId(WebChat.testIds.sendBoxUploadButton));
}
if (isFluentTheme) {
// We cannot mimic drag-and-drop in WebDriver yet. So we are doing as good as we could.
const dataTransfer = new DataTransfer();
dataTransfer.items.add(new File([new ArrayBuffer(100)], 'simple.txt'));
const dragEnterDocumentEvent = new DragEvent('dragenter', {
bubbles: true,
cancelable: true,
dataTransfer
});
document.dispatchEvent(dragEnterDocumentEvent);
const dropEvent = new DragEvent('drop', {
bubbles: true,
cancelable: true,
dataTransfer
});
document.querySelector(`[data-testid="${WebChat.testIds['sendBoxDropZone']}"]`)?.dispatchEvent(dropEvent);
if (disableFileUpload) {
// Attachment bar item should not appear
expect(pageElements.byTestId(WebChat.testIds.sendBoxAttachmentBarItem)).toBeFalsy();
} else {
// Attachment bar item should appear
expect(pageElements.byTestId(WebChat.testIds.sendBoxAttachmentBarItem)).toBeDefined();
}
}
await host.snapshot('local');
});
</script>
</body>
</html>