Skip to content

Commit 148151d

Browse files
committed
serialization fix and slight tooltip tweak
i found the tooltip got snagged if moving mouse downward along a list
1 parent 2687a51 commit 148151d

File tree

7 files changed

+47
-31
lines changed

7 files changed

+47
-31
lines changed

Diff for: packages/selenium-ide/src/browser/I18N/util.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@ const flattenOneLevel = <T extends RecursiveShape>(
4141
if (value && typeof value === 'object') {
4242
flattenOneLevel<T>(keyPath, getValue, target, value as T)
4343
} else {
44-
// @ts-expect-error our shape traversal kinda sucks :(
45-
acc[keyPath] = getValue(keyPath, value)
44+
if (typeof value !== 'function') {
45+
// @ts-expect-error our shape traversal kinda sucks :(
46+
acc[keyPath] = getValue(keyPath, value)
47+
}
4648
}
4749
return acc
4850
}, target as T)

Diff for: packages/selenium-ide/src/browser/I18N/zh/index.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { LanguageMap } from '../en/index'
22
import commandMap from '@seleniumhq/side-model/dist/I18N/zh/Commands'
3-
import { transformNestedObject } from '../util'
43

54
// 窗口顶部菜单
65
const windowTab = {
@@ -202,7 +201,7 @@ const testCore = {
202201
playFromStart: '从头开始回放',
203202
}
204203

205-
export const backend: LanguageMap = {
204+
export const language: LanguageMap = {
206205
windowTab,
207206
electronMenuTree,
208207
fileMenuTree,
@@ -222,4 +221,4 @@ export const backend: LanguageMap = {
222221
commandMap,
223222
}
224223

225-
export const frontend = transformNestedObject((_k, v) => v, backend)
224+
export default language

Diff for: packages/selenium-ide/src/browser/windows/ProjectEditor/tabs/Suites/SuitesDrawer.tsx

+22-16
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { context } from 'browser/contexts/suites'
88
import SuitesToolbar from './Toolbar'
99
import { FormattedMessage } from 'react-intl'
1010
import languageMap from 'browser/I18N/keys'
11+
import { QuestionMark } from '@mui/icons-material'
1112

1213
const {
1314
state: { setActiveSuite: setSelected },
@@ -21,27 +22,32 @@ const SuitesDrawer: FC = () => {
2122
const suites = useContext(context)
2223
return (
2324
<Drawer>
24-
<SuitesToolbar />
25+
<SuitesToolbar>
26+
<Tooltip
27+
title={<FormattedMessage id={languageMap.suitesTab.tooltip} />}
28+
>
29+
<QuestionMark
30+
className="mx-2"
31+
sx={{ color: 'primary.main', scale: 0.75 }}
32+
/>
33+
</Tooltip>
34+
</SuitesToolbar>
2535
<List className="flex-col flex-1 overflow-y" dense>
2636
{suites
2737
.slice()
2838
.sort((a, b) => a.name.localeCompare(b.name))
2939
.map(({ id, name }) => (
30-
<Tooltip
31-
title={<FormattedMessage id={languageMap.suitesTab.tooltip} />}
32-
>
33-
<RenamableListItem
34-
id={id}
35-
key={id}
36-
name={name}
37-
onContextMenu={() => {
38-
window.sideAPI.menus.open('suiteManager', [id])
39-
}}
40-
rename={rename}
41-
selected={id === activeSuiteID}
42-
setSelected={setSelected}
43-
/>
44-
</Tooltip>
40+
<RenamableListItem
41+
id={id}
42+
key={id}
43+
name={name}
44+
onContextMenu={() => {
45+
window.sideAPI.menus.open('suiteManager', [id])
46+
}}
47+
rename={rename}
48+
selected={id === activeSuiteID}
49+
setSelected={setSelected}
50+
/>
4551
))}
4652
</List>
4753
</Drawer>

Diff for: packages/selenium-ide/src/browser/windows/ProjectEditor/tabs/Tests/TestsDrawer.tsx

+8-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { context as testsContext } from 'browser/contexts/tests'
1515
import { context as testResultsContext } from 'browser/contexts/playback-test-results'
1616
import { FormattedMessage, useIntl } from 'react-intl'
1717
import languageMap from 'browser/I18N/keys'
18-
import { QuestionAnswer } from '@mui/icons-material'
18+
import { QuestionMark } from '@mui/icons-material'
1919

2020
const {
2121
state: { setActiveTest: setSelected, setActiveSuite },
@@ -65,7 +65,10 @@ const TestsDrawer: FC = () => {
6565
<Tooltip
6666
title={<FormattedMessage id={languageMap.testsTab.tooltip} />}
6767
>
68-
<QuestionAnswer />
68+
<QuestionMark
69+
className="mx-2"
70+
sx={{ color: 'primary.main', scale: 0.75 }}
71+
/>
6972
</Tooltip>
7073
</EditorToolbar>
7174
<FormControl size="small">
@@ -87,7 +90,9 @@ const TestsDrawer: FC = () => {
8790
sx={{ bottom: 0 }}
8891
value={safeSuiteID}
8992
>
90-
<MenuItem value=""><FormattedMessage id={languageMap.testsTab.allTests} /></MenuItem>
93+
<MenuItem value="">
94+
<FormattedMessage id={languageMap.testsTab.allTests} />
95+
</MenuItem>
9196
{suites.map((s) => (
9297
<MenuItem key={s.id} value={s.id}>
9398
{s.name}

Diff for: packages/selenium-ide/src/main/api/classes/EventListener.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ const baseListener = <ARGS extends VariadicArgs, RESULT extends any>(
6868
}
6969
}
7070

71-
const responsePaths = ['recorder.onRequestelementAt']
71+
const responsePaths = ['recorder.onRequestElementAt']
7272
const wrappedListener = <ARGS extends VariadicArgs>(
7373
path: string,
7474
session: Session,
@@ -115,6 +115,7 @@ const wrappedListener = <ARGS extends VariadicArgs>(
115115
resolve(null)
116116
}
117117
} catch (e) {
118+
console.error(e)
118119
// Sender has expired
119120
removeListener(event)
120121
}

Diff for: packages/selenium-ide/src/main/session/controllers/Projects/index.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ export default class ProjectsController {
132132
}
133133
}
134134
await this.onProjectLoaded(loadedProject, filepath)
135-
return await this.session.state.get()
135+
const state = await this.session.state.get()
136+
return JSON.parse(JSON.stringify(state))
136137
}
137138
return null
138139
} else {
@@ -148,7 +149,8 @@ export default class ProjectsController {
148149

149150
async select(useArgs = false): Promise<void> {
150151
// When we're opened with a side file in the path
151-
let argsFilepath = process.argv.find((arg) => arg.startsWith('--side-file=')) || ''
152+
let argsFilepath =
153+
process.argv.find((arg) => arg.startsWith('--side-file=')) || ''
152154
if (this.filepath) {
153155
await this.load(this.filepath)
154156
} else if (useArgs && argsFilepath) {
@@ -174,9 +176,8 @@ export default class ProjectsController {
174176
let project: ProjectShape
175177
try {
176178
project = JSON.parse(fileContents)
177-
project.plugins = project?.plugins?.filter(
178-
(plugin) => typeof plugin === 'string'
179-
) ?? []
179+
project.plugins =
180+
project?.plugins?.filter((plugin) => typeof plugin === 'string') ?? []
180181
return project
181182
} catch (e) {
182183
console.log((e as Error).message)

Diff for: packages/selenium-ide/src/main/session/controllers/System/index.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ export default class SystemController extends BaseController {
6464
// lang DNE, stay en
6565
} finally {
6666
if (frontend) {
67-
return flattenNestedObject(this.languageMap)
67+
// React intl uses a flat dict so we convert it here
68+
const frontendMap = flattenNestedObject(this.languageMap)
69+
return frontendMap
6870
}
6971
return this.languageMap
7072
}

0 commit comments

Comments
 (0)