FormsRefresh

Student forms / form1-insert

form1-insert

Insert a course: PRE-INSERT takes COURSE_NO from COURSE_NO_SEQ and sets CREATED_DATE and MODIFIED_DATE to SYSDATE (the run date, masked) and the user columns to :GLOBAL.USER_ID ('Qafe').

0defects
68values match
2tolerated by policy
1waived
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 QAFE_FORM1
1new recordClick Toolbar.Insert Record
2Type COURSE.DESCRIPTION[0] = Behavioural Contracts, COURSE.COST[0] = 1195
3saveClick Toolbar.Save

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 QAFE_FORM1

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: new record

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

Step 2: type

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

Step 3: save

Original (Oracle Forms 14.1.2), step 03-save
Original (Oracle Forms 14.1.2)
Migrated (.NET, PostgreSQL), step 03-save
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 QAFE_FORM1COURSE.COURSE_NO[0]COURSE.COST[0] = 40
COURSE.COURSE_NO[0] = 456
COURSE.CREATED_BY[0] = Qafe
COURSE.CREATED_DATE[0] = 29-APR-2016
COURSE.DESCRIPTION[0] = Dutch Grammar
COURSE.MODIFIED_BY[0] = Qafe
COURSE.MODIFIED_DATE[0] = 29-APR-2016
1new recordClick Toolbar.Insert RecordCOURSE.COURSE_NO[0]Course No.
2Type COURSE.DESCRIPTION[0] = Behavioural Contracts, COURSE.COST[0] = 1195COURSE.COST[0]COURSE.COST[0] = 1195
COURSE.DESCRIPTION[0] = Behavioural Contracts
3saveClick Toolbar.SaveCOURSE.COST[0]COURSE.COURSE_NO[0] = 457
COURSE.CREATED_BY[0] = Qafe
COURSE.CREATED_DATE[0] = <date>
COURSE.MODIFIED_BY[0] = Qafe
COURSE.MODIFIED_DATE[0] = <date>
FRM-40400: Transaction complete: 1 records applied and saved.

Database effects

COURSE inserted: {"COURSE_NO": 457, "DESCRIPTION": "Behavioural Contracts", "COST": 1195, "PREREQUISITE": null, "CREATED_BY": "Qafe", "CREATED_DATE": "<date>", "MODIFIED_BY": "Qafe", "MODIFIED_DATE": "<date>"}
sequence COURSE_NO_SEQ: next 457 -> 458, drawn [457]
generated: COURSE.COURSE_NO = 457 is COURSE_NO_SEQ#1

Classified diff against the migrated app

Diff: form1-insert
counts: match 68, tolerated 2, waived 1, defect 0, unmapped 0, harness 0
generated-id pairs (source -> target): COURSE_NO_SEQ#1 -> COURSE_NO_SEQ#1

waivers:
  S1 [proposed] Screen-reader announcement of the COURSE_NO item read as a message: applied to 1 value(s)

[tolerated] ui.values.COURSE.CREATED_DATE  rule=mask:audit-dates  x1
[tolerated] ui.values.COURSE.MODIFIED_DATE  rule=mask:audit-dates  x1
[waived] ui.message  rule=waiver:S1  x1
    step01.message: source 'Course No.' | target ''

Waivers

IdWaiverValuesReason
S1Screen-reader announcement of the COURSE_NO item read as a message1After the cursor enters COURSE.COURSE_NO by record navigation (Next Record, the first record of a query, the Hide Student Count button), the Forms 14.1.2 Java client announces the item for assistive technology: its prompt or hint ("Course No." in QAFE_FORM1, "Course No Required" in QAFE_FORM3) followed by the current value, e.g. "Course No.454". The recorder reads this accessible text where the message line lives, but nothing is written to the visible message line (the screenshots of those steps show an empty status bar) and no form code issues it. A browser target leaves screen-reader announcements to the browser (the item's label is its accessible name), so the visible message line stays empty, as on screen in the source. Only these announcement values are waived; every other message is still compared.