Skip to content

Commit ae1f9ad

Browse files
committed
new functions, undo redo reload
all have hotkeys, reload needs an icon button
1 parent 0968f8c commit ae1f9ad

File tree

23 files changed

+206
-166
lines changed

23 files changed

+206
-166
lines changed

packages/selenium-ide/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "selenium-ide",
3-
"version": "4.0.1-beta.4",
3+
"version": "4.0.1-beta.5",
44
"private": false,
55
"description": "Selenium IDE electron app",
66
"author": "Todd <[email protected]>",

packages/selenium-ide/src/browser/windows/PlaybackWindow/preload/recorder.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ import {
2424
ExpandedMutationObserver,
2525
} from 'browser/types'
2626
import initFindSelect from './find-select'
27-
import { RecordNewCommandInput, RecorderPreprocessor } from '@seleniumhq/side-api'
27+
import {
28+
RecordNewCommandInput,
29+
RecorderPreprocessor,
30+
} from '@seleniumhq/side-api'
2831
import LocatorBuilders from './locator-builders'
2932

3033
export interface RecordingState {

packages/selenium-ide/src/browser/windows/PlaybackWindowBidi/preload/recorder.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,20 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
import { RecordNewCommandInput, RecorderPreprocessor } from '@seleniumhq/side-api'
18+
import {
19+
RecordNewCommandInput,
20+
RecorderPreprocessor,
21+
} from '@seleniumhq/side-api'
1922
import initFindSelect from 'browser/windows/PlaybackWindow/preload/find-select'
2023
import LocatorBuilders from 'browser/windows/PlaybackWindow/preload/locator-builders'
21-
import { attach, detach } from 'browser/windows/PlaybackWindow/preload/prompt-injector'
22-
import { handlers, observers } from 'browser/windows/PlaybackWindow/preload/record-handlers'
24+
import {
25+
attach,
26+
detach,
27+
} from 'browser/windows/PlaybackWindow/preload/prompt-injector'
28+
import {
29+
handlers,
30+
observers,
31+
} from 'browser/windows/PlaybackWindow/preload/record-handlers'
2332
import {
2433
EventHandler,
2534
ExpandedMessageEvent,

packages/selenium-ide/src/browser/windows/ProjectEditor/tabs/Project/ProjectTab.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,7 @@ export interface MiniProjectShape {
1414
}
1515

1616
const SettingsWrapper: FC = () =>
17-
useContext(context) === 'project' ? (
18-
<ProjectSettings />
19-
) : (
20-
<SystemSettings />
21-
)
17+
useContext(context) === 'project' ? <ProjectSettings /> : <SystemSettings />
2218

2319
const ProjectTab: React.FC<Pick<SIDEMainProps, 'setTab' | 'tab'>> = () => (
2420
<Box className="fill flex flex-col">

packages/selenium-ide/src/main/api/classes/DriverEventListener.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { ipcMain, WebContents } from 'electron'
2-
import { BaseListener, EventMutator, ListenerFn, VariadicArgs } from '@seleniumhq/side-api'
2+
import {
3+
BaseListener,
4+
EventMutator,
5+
ListenerFn,
6+
VariadicArgs,
7+
} from '@seleniumhq/side-api'
38
import { Session } from 'main/types'
49
import getCore from '../helpers/getCore'
5-
import { COLOR_CYAN, vdebuglog } from 'main/util'
6-
7-
const apiDebugLog = vdebuglog('api', COLOR_CYAN)
810

911
const baseListener = <ARGS extends VariadicArgs>(
1012
path: string,
@@ -14,19 +16,19 @@ const baseListener = <ARGS extends VariadicArgs>(
1416
const listeners: any[] = []
1517
return {
1618
addListener(listener) {
17-
apiDebugLog('Listener added', path)
19+
session.system.loggers.api('Listener added', path)
1820
listeners.push(listener)
1921
},
2022
async dispatchEvent(...args) {
21-
apiDebugLog('Dispatch event', path, args)
23+
session.system.loggers.api('Dispatch event', path, args)
2224
if (mutator) {
2325
const newState = mutator(getCore(session), args)
2426
session.projects.project = newState.project
2527
session.state.state = newState.state
2628
session.api.state.onMutate.dispatchEvent(path, args)
2729
}
2830
const results = await Promise.all(listeners.map((fn) => fn(...args)))
29-
return results;
31+
return results
3032
},
3133
hasListener(listener) {
3234
return listeners.includes(listener)
@@ -37,7 +39,7 @@ const baseListener = <ARGS extends VariadicArgs>(
3739
if (index === -1) {
3840
throw new Error(`Unable to remove listener for ${path} ${listener}`)
3941
}
40-
apiDebugLog('Listener removed', path)
42+
session.system.loggers.api('Listener removed', path)
4143
listeners.splice(index, 1)
4244
},
4345
}

packages/selenium-ide/src/main/api/classes/DriverHandler.ts

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,8 @@ import {
66
Mutator,
77
} from '@seleniumhq/side-api'
88
import noop from 'lodash/fp/noop'
9-
import { COLOR_CYAN, vdebuglog } from 'main/util'
10-
import getCore from '../helpers/getCore'
119
import { Session, SessionControllerKeys } from '../../types'
1210

13-
const apiDebugLog = vdebuglog('api', COLOR_CYAN)
14-
1511
export type AsyncHandler<HANDLER extends ApiHandler> = (
1612
...args: Parameters<HANDLER>
1713
) => Promise<ReturnType<HANDLER>>
@@ -52,19 +48,14 @@ const Handler =
5248
const handler = factory(path, session)
5349
const doAPI = async (...params: Parameters<HANDLER>) => {
5450
const result = await handler(...params)
55-
if (mutator) {
56-
const { project, state } = mutator(getCore(session), { params, result })
57-
session.projects.project = project
58-
session.state.state = state
59-
session.api.state.onMutate.dispatchEvent(path, { params, result })
60-
}
51+
await session.state.mutate(mutator, params, result, path)
6152
return result
6253
}
6354
ipcMain.handle(path, async (_event, ...args) => {
64-
apiDebugLog('Received API Request', path, args)
55+
session.system.loggers.api('Received API Request', path, args)
6556
const result = await doAPI(...(args as Parameters<HANDLER>))
66-
apiDebugLog('Resolved API Request', path, result)
67-
return result;
57+
session.system.loggers.api('Resolved API Request', path, result)
58+
return result
6859
})
6960
return doAPI
7061
}

packages/selenium-ide/src/main/api/classes/DriverRawHandler.ts

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
import { Mutator } from '@seleniumhq/side-api'
22
import { ipcMain } from 'electron'
33
import noop from 'lodash/fp/noop'
4-
import { COLOR_CYAN, vdebuglog } from 'main/util'
54
import { AsyncHandler, HandlerFactory } from './Handler'
6-
import getCore from '../helpers/getCore'
75
import { Session, SessionControllerKeys } from '../../types'
86

9-
const apiDebugLog = vdebuglog('api', COLOR_CYAN)
10-
117
export type ParametersExceptFirst<F> = F extends (
128
arg0: any,
139
...rest: infer R
@@ -50,28 +46,17 @@ const Handler =
5046
const handler = factory(path, session)
5147
const doAPI = async (...params: Parameters<HANDLER>) => {
5248
const result = await handler(...params)
53-
if (mutator) {
54-
const serializableParams = params.slice(
55-
1
56-
) as ParametersExceptFirst<HANDLER>
57-
const newState = mutator(getCore(session), {
58-
params: serializableParams,
59-
result,
60-
})
61-
session.projects.project = newState.project
62-
session.state.state = newState.state
63-
session.api.state.onMutate.dispatchEvent(path, {
64-
params: serializableParams,
65-
result,
66-
})
67-
}
49+
const serializableParams = params.slice(
50+
1
51+
) as ParametersExceptFirst<HANDLER>
52+
await session.state.mutate(mutator, serializableParams, result, path)
6853
return result
6954
}
7055
ipcMain.handle(path, async (...args) => {
71-
apiDebugLog('Received API Request', path, args.slice(1))
56+
session.system.loggers.api('Received API Request', path, args.slice(1))
7257
const result = await doAPI(...(args as Parameters<HANDLER>))
73-
apiDebugLog('Resolved API Request', path, result)
74-
return result;
58+
session.system.loggers.api('Resolved API Request', path, result)
59+
return result
7560
})
7661
return doAPI
7762
}

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ import {
77
} from '@seleniumhq/side-api'
88
import { Session } from 'main/types'
99
import getCore from '../helpers/getCore'
10-
import { COLOR_CYAN, vdebuglog } from 'main/util'
11-
12-
const apiDebugLog = vdebuglog('api', COLOR_CYAN)
1310

1411
export type MainListener<
1512
ARGS extends VariadicArgs,
@@ -26,11 +23,11 @@ const baseListener = <ARGS extends VariadicArgs, RESULT extends any>(
2623
const listeners: any[] = []
2724
return {
2825
addListener(listener) {
29-
apiDebugLog('Listener added', path)
26+
session.system.loggers.api('Listener added', path)
3027
listeners.push(listener)
3128
},
3229
async dispatchEvent(...args) {
33-
apiDebugLog('Dispatch event', path, args)
30+
session.system.loggers.api('Dispatch event', path, args)
3431
if (mutator) {
3532
session.api.state.onMutate.dispatchEvent(path, args)
3633
const newState = mutator(getCore(session), args)
@@ -40,7 +37,7 @@ const baseListener = <ARGS extends VariadicArgs, RESULT extends any>(
4037
return await Promise.all<RESULT>(listeners.map((fn) => fn(...args)))
4138
},
4239
async dispatchEventAsync(...args) {
43-
apiDebugLog('Dispatch event async', path, args)
40+
session.system.loggers.api('Dispatch event async', path, args)
4441
if (mutator) {
4542
session.api.state.onMutate.dispatchEvent(path, args)
4643
const newState = mutator(getCore(session), args)
@@ -61,7 +58,7 @@ const baseListener = <ARGS extends VariadicArgs, RESULT extends any>(
6158
if (index === -1) {
6259
throw new Error(`Unable to remove listener for ${path} ${listener}`)
6360
}
64-
apiDebugLog('Listener removed', path)
61+
session.system.loggers.api('Listener removed', path)
6562
listeners.splice(index, 1)
6663
},
6764
}

packages/selenium-ide/src/main/api/classes/Handler.ts

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,8 @@ import {
66
Mutator,
77
} from '@seleniumhq/side-api'
88
import noop from 'lodash/fp/noop'
9-
import { COLOR_CYAN, vdebuglog } from 'main/util'
10-
import getCore from '../helpers/getCore'
119
import { Session, SessionControllerKeys } from '../../types'
1210

13-
const apiDebugLog = vdebuglog('api', COLOR_CYAN)
14-
1511
export type AsyncHandler<HANDLER extends ApiHandler> = (
1612
...args: Parameters<HANDLER>
1713
) => Promise<ReturnType<HANDLER>>
@@ -31,7 +27,9 @@ const defaultHandler = <HANDLER extends ApiHandler>(
3127
// @ts-expect-error
3228
return controller[method].bind(controller) as AsyncHandler<HANDLER>
3329
}
34-
apiDebugLog(`Missing method for path ${path}, using passthrough`)
30+
session.system.loggers.api(
31+
`Missing method for path ${path}, using passthrough`
32+
)
3533
return noop as unknown as AsyncHandler<HANDLER>
3634
}
3735

@@ -52,19 +50,14 @@ const Handler =
5250
const handler = factory(path, session)
5351
const doAPI = async (...params: Parameters<HANDLER>) => {
5452
const result = await handler(...params)
55-
if (mutator) {
56-
const { project, state } = mutator(getCore(session), { params, result })
57-
session.projects.project = project
58-
session.state.state = state
59-
session.api.state.onMutate.dispatchEvent(path, { params, result })
60-
}
53+
await session.state.mutate(mutator, params, result, path)
6154
return result
6255
}
6356
ipcMain.handle(path, async (_event, ...args) => {
64-
apiDebugLog('Received API Request', path, args)
57+
session.system.loggers.api('Received API Request', path, args)
6558
const result = await doAPI(...(args as Parameters<HANDLER>))
66-
apiDebugLog('Resolved API Request', path, result)
67-
return result;
59+
session.system.loggers.api('Resolved API Request', path, result)
60+
return result
6861
})
6962
return doAPI
7063
}

packages/selenium-ide/src/main/api/classes/RawHandler.ts

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
import { Mutator } from '@seleniumhq/side-api'
22
import { ipcMain } from 'electron'
33
import noop from 'lodash/fp/noop'
4-
import { COLOR_CYAN, vdebuglog } from 'main/util'
54
import { AsyncHandler, HandlerFactory } from './Handler'
6-
import getCore from '../helpers/getCore'
75
import { Session, SessionControllerKeys } from '../../types'
86

9-
const apiDebugLog = vdebuglog('api', COLOR_CYAN)
10-
117
export type ParametersExceptFirst<F> = F extends (
128
arg0: any,
139
...rest: infer R
@@ -50,28 +46,17 @@ const Handler =
5046
const handler = factory(path, session)
5147
const doAPI = async (...params: Parameters<HANDLER>) => {
5248
const result = await handler(...params)
53-
if (mutator) {
54-
const serializableParams = params.slice(
55-
1
56-
) as ParametersExceptFirst<HANDLER>
57-
const newState = mutator(getCore(session), {
58-
params: serializableParams,
59-
result,
60-
})
61-
session.projects.project = newState.project
62-
session.state.state = newState.state
63-
session.api.state.onMutate.dispatchEvent(path, {
64-
params: serializableParams,
65-
result,
66-
})
67-
}
49+
const serializableParams = params.slice(
50+
1
51+
) as ParametersExceptFirst<HANDLER>
52+
await session.state.mutate(mutator, serializableParams, result, path)
6853
return result
6954
}
7055
ipcMain.handle(path, async (...args) => {
71-
apiDebugLog('Received API Request', path, args.slice(1))
56+
session.system.loggers.api('Received API Request', path, args.slice(1))
7257
const result = await doAPI(...(args as Parameters<HANDLER>))
73-
apiDebugLog('Resolved API Request', path, result)
74-
return result;
58+
session.system.loggers.api('Resolved API Request', path, result)
59+
return result
7560
})
7661
return doAPI
7762
}

0 commit comments

Comments
 (0)