Skip to content

Commit 4d5f1ba

Browse files
committed
Tests: Update download py file flaky test.
1 parent fd3b0c9 commit 4d5f1ba

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@ Thumbs.db
1010
Desktop.ini
1111
$RECYCLE.BIN/
1212
*.swp
13+
14+
# Temp directory used for unit testing
1315
tests/spec/test-files/temp-test-files/
1416

1517
# Node
1618
node_modules/
1719

1820
# vscode
1921
.history
20-
.vscode/settings.json
22+
.vscode/settings.json

tests/spec/puppeteer-spec.js

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const fs = require("fs");
2+
const path = require("path");
23
const puppeteer = require("puppeteer");
34

45
jest.setTimeout(20000);
@@ -11,7 +12,10 @@ describe("Puppeteer basic tests for the Python Editor.", function() {
1112
beforeAll(async() => {
1213
// Setup a headless Chromium browser.
1314
// Flags allow Puppeteer to run within a container.
14-
browser = await puppeteer.launch({headless: true, args: ["--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage"]});
15+
browser = await puppeteer.launch({
16+
headless: true,
17+
args: ["--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage"]
18+
});
1519
});
1620

1721
afterAll(async() => {
@@ -151,50 +155,60 @@ describe("Puppeteer basic tests for the Python Editor.", function() {
151155
expect(codeName).toEqual("too-large");
152156
});
153157

154-
it("Saves a python file with the correct filename", async function(){
155-
if (fs.existsSync("./spec/test-files/temp-test-files/program_test.py")) {
156-
fs.unlinkSync("./spec/test-files/temp-test-files/program_test.py");
157-
}
158+
it("Saves a python file with the correct filename", async function() {
159+
const downloadFolder = path.join(process.cwd(), "spec", "test-files", "temp-test-files");
160+
const filePath = path.join(downloadFolder, "program_test.py");
161+
if (!fs.existsSync(downloadFolder)) fs.mkdirSync(downloadFolder);
162+
if (fs.existsSync(filePath)) fs.unlinkSync(filePath);
158163
const page = await browser.newPage();
159-
await page._client.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: './spec/test-files/temp-test-files'});
164+
await page._client.send('Page.setDownloadBehavior', {
165+
behavior: 'allow',
166+
downloadPath: downloadFolder
167+
});
160168
await page.goto("http://localhost:5000/editor.html");
161169

162-
await page.evaluate( () => document.getElementById("script-name").value = "program test")
163-
const scriptName = await page.evaluate("document.getElementById('script-name').value");
164-
for (let ms=0; ms<100; ms++) {
170+
await page.evaluate(() => document.getElementById("script-name").value = "program test")
171+
for (let ms = 0; ms < 100; ms++) {
172+
let scriptName = await page.evaluate("document.getElementById('script-name').value");
165173
if (scriptName === "program test") break;
166174
await page.waitFor(10);
167175
}
168176
await page.click("#command-files");
169177
await page.click("#show-files");
178+
await page.waitFor(100);
170179
await page.click(".save-button.save");
171-
await page.waitFor(1000); //waiting to ensure file is saved
172-
const fileExists = fs.existsSync("./spec/test-files/temp-test-files/program_test.py");
173-
fs.unlinkSync("./spec/test-files/temp-test-files/program_test.py");
180+
await page.waitFor(500); //waiting to ensure file is saved
181+
const fileExists = fs.existsSync(filePath);
182+
fs.unlinkSync(filePath);
183+
fs.rmdirSync(downloadFolder);
174184

175185
expect(fileExists).toBeTruthy();
176186
});
177187

178188
it("Correctly handles an mpy file", async function(){
179189
const page = await browser.newPage();
180190
await page.goto("http://localhost:5000/editor.html");
191+
181192
await page.click("#command-files");
182193
let fileInput = await page.$("#file-upload-input");
183194
await fileInput.uploadFile("./spec/test-files/samplempyfile.mpy");
184195
const modalContent = await page.evaluate("$('#modal-msg-content').text()");
185196
const modalDisplay = await page.evaluate("$('#modal-msg-overlay-container').css('display')");
197+
186198
expect(modalContent).toContain("This version of the Python Editor doesn\'t currently support adding .mpy files.");
187199
expect(modalDisplay).toContain("block");
188200
});
189201

190202
it("Correctly handles a file with an invalid extension", async function(){
191203
const page = await browser.newPage();
192204
await page.goto("http://localhost:5000/editor.html");
205+
193206
await page.click("#command-files");
194207
let fileInput = await page.$("#file-upload-input");
195208
await fileInput.uploadFile("./spec/test-files/sampletxtfile.txt");
196209
const modalContent = await page.evaluate("$('#modal-msg-content').text()");
197210
const modalDisplay = await page.evaluate("$('#modal-msg-overlay-container').css('display')");
211+
198212
expect(modalContent).toContain("The Python Editor can only load files with the .hex or .py extensions.");
199213
expect(modalDisplay).toContain("block");
200214
});

0 commit comments

Comments
 (0)