FormsRefresh

HR application / console-apex

console-apex

The APEX button composes a URL with a signed token (COMPOSE_URL), shows it and calls WEB.SHOW_DOCUMENT.

0defects
39values match
1tolerated by policy
3waived
0unmapped

Three runs from a fresh database gave byte-identical diffs. Behaviour that looks odd in the migrated app but is the original's: faithful to the original and waivers. Files: scenario, golden record, target record, diff (JSON).

Scenario steps

Items are addressed by their Forms name (BLOCK.ITEM[row]), the same name in the original and, through the mapping, in the migrated app.

#StepActionChecked on the original
0Open form login
1Type LOGIN.USERNAME = alice, LOGIN.PASSWORD = alice#123
2loginClick LOGIN.LOGIN
3apexClick CONSOLE.APEX

Screens, step by step

Left: the original Oracle Forms application, recorded on a virtual display. Right: the migrated application in headless Chromium. Screenshots are evidence only; the comparison works on the recorded values.

Step 0: open login

Original (Oracle Forms 14.1.2), step 00-open
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 00-open
Migrated (.NET, PostgreSQL)

Step 1: type

Original (Oracle Forms 14.1.2), step 01-type
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 01-type
Migrated (.NET, PostgreSQL)

Step 2: login

Original (Oracle Forms 14.1.2), step 02-login
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 02-login
Migrated (.NET, PostgreSQL)

Step 3: apex

Original (Oracle Forms 14.1.2), step 03-apex
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 03-apex
Migrated (.NET, PostgreSQL)

Golden record of the original

After each step: the focus, the displayed values that changed, the message line and any alert. The full record (every item of every step, windows, lists of values) is in the JSON file.

#StepAction (by name)Focus afterDisplayed values that changedMessage lineAlertExpect
0Open form loginLOGIN.USERNAME[0]
1Type LOGIN.USERNAME = alice, LOGIN.PASSWORD = alice#123LOGIN.PASSWORD[0]LOGIN.PASSWORD[0] = alice#123
LOGIN.USERNAME[0] = alice
2loginClick LOGIN.LOGINCONSOLE.EMPLOYEES[0]CONSOLE.USERNAME[0] = alice
3apexClick CONSOLE.APEXFWindow/PushButton:OKAPEX URL: http://localhost:8080/ords/r/hr_dev/hr-app/home?request=APEX_AUTHENTICATION=JWT&x01=<any>FRM-92022: cannot launch URL http://localhost:8080/ords/r/hr_dev/hr-app/home?request=APEX_AUTHENTICATION=JWT&x01=<any> with target _blank. full details: The BROWSE action is not supported on the current platform!

Database effects

None: the scenario changes no row and draws no sequence value.

Classified diff against the migrated app

Diff: console-apex
counts: match 39, tolerated 1, waived 3, defect 0, unmapped 0, harness 0
generated-id pairs (source -> target): none

waivers:
  H1 [proposed] APEX links fail with FRM-92022 instead of opening the page: applied to 3 value(s)
  H2 [proposed] Department tab keeps the previous department number: applied to 0 value(s)

[tolerated] ui.message  rule=mask:apex-token  x1
[waived] ui.alert  rule=waiver:H1  (alert missing in the target)  x1
    step03.alert: source {"title": "Forms", "message": ["FRM-92022: cannot launch URL http:/... | target null
[waived] ui.focus  rule=waiver:H1  (expected dialog)  x1
    step03.focus: source 'FWindow/PushButton:OK' | target 'console.apex[0]'
[waived] ui.windows  rule=waiver:H1  x1
    step03.windows: source [["CONSOLE", "HR APP"], ["alert", "Forms"]] | target [["CONSOLE", "HR APP"]]

Waivers

IdWaiverValuesReason
H1APEX links fail with FRM-92022 instead of opening the page3The APEX buttons (CONSOLE.APEX, BUTTONS.APEX_BUTTON, the EMPLOYEES.APEX row button) compose a signed APEX URL, show it on the message line and call WEB.SHOW_DOCUMENT(url, '_blank'). On the Forms 14.1.2 client this fails: Forms shows the alert "FRM-92022: cannot launch URL ... The BROWSE action is not supported on the current platform!" and the page never opens, so the source records an alert, alert focus and an extra window, and the user has to dismiss it. The target writes the same message and opens the URL in a new browser tab, which is what the code asks for. Replicating the failure would mean shipping a broken link. The message line (APEX URL with the token) is still compared.