Skip to content

Commit 3eab322

Browse files
[JS] Add test for multiple file upload
1 parent 7eb1db1 commit 3eab322

File tree

2 files changed

+58
-6
lines changed

2 files changed

+58
-6
lines changed

javascript/node/selenium-webdriver/lib/test/fileserver.js

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,24 @@ function handleUpload(request, response) {
248248
response.writeHead(500)
249249
response.end(err + '')
250250
} else {
251-
response.writeHead(200)
252-
response.write(request.files[0].buffer)
253-
response.end('<script>window.top.window.onUploadDone();</script>')
251+
if (!request.files) {
252+
return response.status(400).send('No files were uploaded')
253+
}
254+
255+
let files = []
256+
let keys = Object.keys(request.files)
257+
258+
keys.forEach((file) => {
259+
files.push(request.files[file].originalname)
260+
})
261+
262+
response
263+
.status(200)
264+
.contentType('html')
265+
.send(
266+
files.join('\n') +
267+
'\n<script>window.top.window.onUploadDone();</script>'
268+
)
254269
}
255270
})
256271
}

javascript/node/selenium-webdriver/test/upload_test.js

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ const Pages = test.Pages
2929
test.suite(function (env) {
3030
var LOREM_IPSUM_TEXT = 'lorem ipsum dolor sit amet'
3131
var FILE_HTML = '<!DOCTYPE html><div>' + LOREM_IPSUM_TEXT + '</div>'
32+
var FILE_HTML_2 = '<!DOCTYPE html><div>' + "I love sausages too" + '</div>'
3233

3334
var _fp
3435
before(function () {
@@ -49,6 +50,41 @@ test.suite(function (env) {
4950
}
5051
})
5152

53+
test
54+
.ignore(env.browsers(Browser.SAFARI))
55+
.it('can upload multiple files', async function () {
56+
driver.setFileDetector(new remote.FileDetector())
57+
58+
await driver.get(Pages.uploadPage)
59+
60+
var fp1 = await io.tmpFile().then(function (fp) {
61+
fs.writeFileSync(fp, FILE_HTML)
62+
return fp
63+
})
64+
65+
var fp2 = await io.tmpFile().then(function (fp) {
66+
fs.writeFileSync(fp, FILE_HTML_2)
67+
return fp
68+
})
69+
70+
await driver.findElement(By.id('upload')).sendKeys(fp1 + '\n' + fp2)
71+
await driver.findElement(By.id('go')).click()
72+
73+
// Uploading files across a network may take a while, even if they're small.
74+
var label = await driver.findElement(By.id('upload_label'))
75+
await driver.wait(
76+
until.elementIsNotVisible(label),
77+
10 * 1000,
78+
'File took longer than 10 seconds to upload!'
79+
)
80+
81+
var frame = await driver.findElement(By.id('upload_target'))
82+
await driver.switchTo().frame(frame)
83+
const txt = await driver.findElement(By.css('body')).getText()
84+
assert.match(txt, new RegExp(fp1.split('/').pop()))
85+
assert.match(txt, new RegExp(fp2.split('/').pop()))
86+
})
87+
5288
test
5389
.ignore(env.browsers(Browser.SAFARI))
5490
.it('can upload files', async function () {
@@ -63,7 +99,6 @@ test.suite(function (env) {
6399

64100
await driver.findElement(By.id('upload')).sendKeys(fp)
65101
await driver.findElement(By.id('go')).click()
66-
67102
// Uploading files across a network may take a while, even if they're small.
68103
var label = await driver.findElement(By.id('upload_label'))
69104
await driver.wait(
@@ -74,9 +109,11 @@ test.suite(function (env) {
74109

75110
var frame = await driver.findElement(By.id('upload_target'))
76111
await driver.switchTo().frame(frame)
112+
const txt = await driver.findElement(By.css('body')).getText();
77113
assert.strictEqual(
78-
await driver.findElement(By.css('body')).getText(),
79-
LOREM_IPSUM_TEXT
114+
txt,
115+
fp.split('/').pop(),
116+
`The document contained ${await driver.getPageSource()}`
80117
)
81118
})
82119
})

0 commit comments

Comments
 (0)