Skip to content

Commit 646ac0d

Browse files
author
David Haeffner
committed
Switched back to original user agent parsing in filesystem.js for point release
1 parent ea99a3e commit 646ac0d

File tree

1 file changed

+92
-90
lines changed

1 file changed

+92
-90
lines changed

packages/selenium-ide/src/neo/IO/filesystem.js

Lines changed: 92 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -15,196 +15,198 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
import browser from 'webextension-polyfill'
19-
import { js_beautify as beautify } from 'js-beautify'
20-
import UpgradeProject from './migrate'
18+
import browser from "webextension-polyfill";
19+
import parser from "ua-parser-js";
20+
import { js_beautify as beautify } from "js-beautify";
21+
import UpgradeProject from "./migrate";
2122
import {
2223
verifyFile,
2324
FileTypes,
2425
migrateTestCase,
2526
migrateProject,
26-
migrateUrls,
27-
} from './legacy/migrate'
28-
import TestCase from '../models/TestCase'
29-
import UiState from '../stores/view/UiState'
30-
import PlaybackState from '../stores/view/PlaybackState'
31-
import ModalState from '../stores/view/ModalState'
32-
import Selianize, { ParseError } from 'selianize'
33-
import Manager from '../../plugin/manager'
34-
import chromeGetFile from './filesystem/chrome'
35-
import firefoxGetFile from './filesystem/firefox'
36-
import { userAgent as parsedUA } from '../../common/utils'
37-
export const supportedFileFormats = '.side, text/html'
27+
migrateUrls
28+
} from "./legacy/migrate";
29+
import TestCase from "../models/TestCase";
30+
import UiState from "../stores/view/UiState";
31+
import PlaybackState from "../stores/view/PlaybackState";
32+
import ModalState from "../stores/view/ModalState";
33+
import Selianize, { ParseError } from "selianize";
34+
import Manager from "../../plugin/manager";
35+
import chromeGetFile from "./filesystem/chrome";
36+
import firefoxGetFile from "./filesystem/firefox";
37+
export const supportedFileFormats = ".side, text/html";
38+
39+
const parsedUA = parser(window.navigator.userAgent);
3840

3941
export function getFile(path) {
40-
const browserName = parsedUA.browser.name
42+
const browserName = parsedUA.browser.name;
4143
return (() => {
42-
if (browserName === 'Chrome') {
43-
return chromeGetFile(path)
44-
} else if (browserName === 'Firefox') {
45-
return firefoxGetFile(path)
44+
if (browserName === "Chrome") {
45+
return chromeGetFile(path);
46+
} else if (browserName === "Firefox") {
47+
return firefoxGetFile(path);
4648
} else {
4749
return Promise.reject(
48-
new Error('Operation is not supported in this browser')
49-
)
50+
new Error("Operation is not supported in this browser")
51+
);
5052
}
5153
})().then(blob => {
5254
return new Promise(res => {
53-
const reader = new FileReader()
54-
reader.addEventListener('load', () => {
55-
res(reader.result)
56-
})
57-
reader.readAsDataURL(blob)
58-
})
59-
})
55+
const reader = new FileReader();
56+
reader.addEventListener("load", () => {
57+
res(reader.result);
58+
});
59+
reader.readAsDataURL(blob);
60+
});
61+
});
6062
}
6163

6264
export function loadAsText(blob) {
6365
return new Promise(res => {
64-
const fileReader = new FileReader()
66+
const fileReader = new FileReader();
6567
fileReader.onload = e => {
66-
res(e.target.result)
67-
}
68+
res(e.target.result);
69+
};
6870

69-
fileReader.readAsText(blob)
70-
})
71+
fileReader.readAsText(blob);
72+
});
7173
}
7274

7375
export function saveProject(_project) {
74-
const project = _project.toJS()
75-
downloadProject(project)
76-
UiState.saved()
76+
const project = _project.toJS();
77+
downloadProject(project);
78+
UiState.saved();
7779
}
7880

7981
function downloadProject(project) {
8082
return exportProject(project).then(snapshot => {
8183
if (snapshot) {
82-
project.snapshot = snapshot
83-
Object.assign(project, Manager.emitDependencies())
84+
project.snapshot = snapshot;
85+
Object.assign(project, Manager.emitDependencies());
8486
}
8587
return browser.downloads.download({
86-
filename: project.name + '.side',
88+
filename: project.name + ".side",
8789
url: createBlob(
88-
'application/json',
90+
"application/json",
8991
beautify(JSON.stringify(project), { indent_size: 2 })
9092
),
9193
saveAs: true,
92-
conflictAction: 'overwrite',
93-
})
94-
})
94+
conflictAction: "overwrite"
95+
});
96+
});
9597
}
9698

9799
function exportProject(project) {
98100
return Manager.validatePluginExport(project).then(() => {
99101
return Selianize(project, {
100102
silenceErrors: true,
101-
skipStdLibEmitting: true,
103+
skipStdLibEmitting: true
102104
}).catch(err => {
103-
const markdown = ParseError((err && err.message) || err)
105+
const markdown = ParseError((err && err.message) || err);
104106
ModalState.showAlert(
105107
{
106-
title: 'Error saving project',
108+
title: "Error saving project",
107109
description: markdown,
108-
confirmLabel: 'Download log',
109-
cancelLabel: 'Close',
110+
confirmLabel: "Download log",
111+
cancelLabel: "Close"
110112
},
111113
choseDownload => {
112114
if (choseDownload) {
113115
browser.downloads.download({
114-
filename: project.name + '-logs.md',
115-
url: createBlob('text/markdown', markdown),
116+
filename: project.name + "-logs.md",
117+
url: createBlob("text/markdown", markdown),
116118
saveAs: true,
117-
conflictAction: 'overwrite',
118-
})
119+
conflictAction: "overwrite"
120+
});
119121
}
120122
}
121-
)
122-
return Promise.reject()
123-
})
124-
})
123+
);
124+
return Promise.reject();
125+
});
126+
});
125127
}
126128

127-
let previousFile = null
129+
let previousFile = null;
128130
// eslint-disable-next-line
129131
function createBlob(mimeType, data) {
130132
const blob = new Blob([data], {
131-
type: 'text/plain',
132-
})
133+
type: "text/plain"
134+
});
133135
// If we are replacing a previously generated file we need to
134136
// manually revoke the object URL to avoid memory leaks.
135137
if (previousFile !== null) {
136-
window.URL.revokeObjectURL(previousFile)
138+
window.URL.revokeObjectURL(previousFile);
137139
}
138-
previousFile = window.URL.createObjectURL(blob)
139-
return previousFile
140+
previousFile = window.URL.createObjectURL(blob);
141+
return previousFile;
140142
}
141143

142144
export function loadProject(project, file) {
143145
function displayError(error) {
144146
ModalState.showAlert({
145-
title: 'Error migrating project',
147+
title: "Error migrating project",
146148
description: error.message,
147-
confirmLabel: 'Close',
148-
})
149+
confirmLabel: "Close"
150+
});
149151
}
150152
loadAsText(file).then(contents => {
151153
if (/\.side$/.test(file.name)) {
152-
loadJSProject(project, UpgradeProject(JSON.parse(contents)))
154+
loadJSProject(project, UpgradeProject(JSON.parse(contents)));
153155
} else {
154156
try {
155-
const type = verifyFile(contents)
157+
const type = verifyFile(contents);
156158
if (type === FileTypes.Suite) {
157159
ModalState.importSuite(contents, files => {
158160
try {
159-
loadJSProject(project, migrateProject(files))
161+
loadJSProject(project, migrateProject(files));
160162
} catch (error) {
161-
displayError(error)
163+
displayError(error);
162164
}
163-
})
165+
});
164166
} else if (type === FileTypes.TestCase) {
165-
let { test, baseUrl } = migrateTestCase(contents)
167+
let { test, baseUrl } = migrateTestCase(contents);
166168
if (project.urls.length && !project.urls.includes(baseUrl)) {
167169
ModalState.showAlert(
168170
{
169-
title: 'Migrate test case',
171+
title: "Migrate test case",
170172
description: `The test case you're trying to migrate has a different base URL (${baseUrl}) than the project's one. \nIn order to migrate the test case URLs will be made absolute.`,
171-
confirmLabel: 'Migrate',
172-
cancelLabel: 'Discard',
173+
confirmLabel: "Migrate",
174+
cancelLabel: "Discard"
173175
},
174176
choseMigration => {
175177
if (choseMigration) {
176178
UiState.selectTest(
177179
project.addTestCase(
178180
TestCase.fromJS(migrateUrls(test, baseUrl))
179181
)
180-
)
182+
);
181183
}
182184
}
183-
)
185+
);
184186
} else {
185187
UiState.selectTest(
186188
project.addTestCase(TestCase.fromJS(test, baseUrl))
187-
)
189+
);
188190
}
189191
}
190192
} catch (error) {
191-
displayError(error)
193+
displayError(error);
192194
}
193195
}
194-
})
196+
});
195197
}
196198

197199
export function loadJSProject(project, data) {
198-
UiState.changeView('Tests')
199-
PlaybackState.clearPlayingCache()
200-
UiState.clearViewCache()
201-
project.fromJS(data)
202-
UiState.projectChanged()
200+
UiState.changeView("Tests");
201+
PlaybackState.clearPlayingCache();
202+
UiState.clearViewCache();
203+
project.fromJS(data);
204+
UiState.projectChanged();
203205
Manager.emitMessage({
204-
action: 'event',
205-
event: 'projectLoaded',
206+
action: "event",
207+
event: "projectLoaded",
206208
options: {
207-
projectName: project.name,
208-
},
209-
})
209+
projectName: project.name
210+
}
211+
});
210212
}

0 commit comments

Comments
 (0)