Open Bug 1998770 Opened 14 days ago Updated 16 hours ago

www.bancoestado.cl - login window only appears on a second attempt

Categories

(Web Compatibility :: Site Reports, defect, P1)

Firefox 131
Desktop
Windows

Tracking

(Webcompat Priority:P1, Webcompat Score:8)

Webcompat Priority P1
Webcompat Score 8

People

(Reporter: ksenia, Unassigned)

References

()

Details

(Keywords: webcompat:needs-diagnosis, webcompat:site-report, Whiteboard: [webcompat-source:product])

User Story

user-impact-score:800
platform:windows,mac,linux
impact:workflow-broken
configuration:general
affects:all
branch:release
diagnosis-team:dom

Environment:
Operating system: Desktop
Firefox version: Firefox 144.0.2 (release)

Preconditions:

  • Clean profile

Steps to reproduce:

  1. Navigate to: https://www.bancoestado.cl/content/bancoestado-public/cl/es/home/inicio---bancoestado-empresas.html#/
  2. Click on "Ingreso cliente" in the top right corner

Expected Behavior:
Login form appears on the right

Actual Behavior:
Login form doesn't appear on the first click, need to click again

Notes:

  • Reproducible on the latest Firefox Release and Nightly
  • Reproducible regardless of the ETP setting
  • Works as expected using Chrome

Created from webcompat-user-report:a99e78cf-687c-44a4-9b78-af8d679ff2d5

Some related reports comments:
I'm trying to log into the bank, but the login window isn't appearing.
The online banking side menu won't open when tracking protection is enabled. It only appears when I disable it.
The button to access the customer portal does not load when pressing "online banking".
"online banking" does not open

Summary: www.bancoestado.cl - login window only appears on a second click → www.bancoestado.cl - login window only appears on a second attempt
User Story: (updated)
Webcompat Score: --- → 1
Severity: -- → S2
User Story: (updated)
Webcompat Priority: --- → P1
Webcompat Score: 1 → 8
Priority: -- → P1

Hi Kagami, can you please help diagnose this? Thank you.

Flags: needinfo?(krosylight)

They use Angular in 2025 and the call stack is terrible 🙂

value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#233356)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#235623)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#189782)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#108308)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#245105)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#108308)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#189786)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#108308)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#176901)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#253797)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#108308)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#189786)
value (https://nwm.bancoestado.cl/staticpublic/main.js:formatted#108308)
... hundreds of more lines ...

Somehow the function "activate" is called twice on Firefox. The first call opens the login popup and then immediately the second call closes it on deactivateChildRoutes(). Chrome only gets it once, unclear why the difference.

            }, [{
                key: "activate",
                value: function(t) {
                    var e = this.futureState._root
                      , n = this.currState ? this.currState._root : null;
                    this.deactivateChildRoutes(e, n, t),
                    we(this.futureState.root),
                    this.activateChildRoutes(e, n, t)
                }
            }, {
Flags: needinfo?(krosylight)

ng-version="10.2.5", which is only 4 years old...

                              {
                                key: 'extractLocationChangeInfoFromEvent',
                                value: function (t) {
                                  var e;
                                  return {
                                    source: 'popstate' === t.type ? 'popstate' : 'hashchange',
                                    urlTree: this.parseUrl(t.url),
                                    state: (null === (e = t.state) || void 0 === e ? void 0 : e.navigationId) ? t.state : null,
                                    transitionId: this.getTransition().id
                                  }
                                }
                              },
                              {
                                key: 'shouldScheduleNavigation',
                                value: function (t, e) {
                                  if (!t) return !0;
                                  var n = e.urlTree.toString() === t.urlTree.toString();
                                  return !(
                                    e.transitionId === t.transitionId &&
                                    n &&
                                    (
                                      'hashchange' === e.source &&
                                      'popstate' === t.source ||
                                      'popstate' === e.source &&
                                      'hashchange' === t.source
                                    )
                                  )
                                }
                              },

extractLocationChangeInfoFromEvent somehow gives different transitionId for popstate and hashchange events, and thus shouldScheduleNavigation thinks the hashchange event following popstate is a separate event, and then proceeds to call activate again.

https://github.com/angular/angular/blob/c270c88dfd471a225fb102904d1082ec4a5811da/packages/router/src/router.ts#L989-L1023

https://github.com/angular/angular/blob/c270c88dfd471a225fb102904d1082ec4a5811da/packages/router/src/router.ts#L1350-L1364

id seems to be from scheduleNavigation()

    const id = ++this.navigationId;
    this.setTransition({
      id,
      source,
      restoredState,
      currentUrlTree: this.currentUrlTree,
      currentRawUrl: this.rawUrlTree,
      rawUrl,
      extras,
      resolve,
      reject,
      promise,
      currentSnapshot: this.routerState.snapshot,
      currentRouterState: this.routerState
    });

Here is the pernosco recording: https://pernos.co/debug/-nYBhLgpCJ1G_IWIf2o7Kw/index.html

Actions performed in this recording:

  • Click on "Ingreso cliente" -- the login panel appears normally.
  • Click somewhere else on the page -- the login panel is dismissed.
  • Click on "Ingreso cliente" again -- the issue occurs; no login panel is shown.
  • Click on "Ingreso cliente" once more -- the login panel appears again.
You need to log in before you can comment on or make changes to this bug.