Skip to content

Instantly share code, notes, and snippets.

View dandoingdev's full-sized avatar

Daniel dandoingdev

View GitHub Profile
@dandoingdev
dandoingdev / README.md
Created October 1, 2026 15:31
Ionic Vue 9.0.6: deterministic late swipe cancellation reproduction

Ionic Vue: late swipe cancellation accesses a missing page

Download these four files into one directory, then run npm install and npm run dev with Node 22.12+ or a compatible newer release. Open the displayed local URL and click Reproduce.

With Ionic Vue 9.0.6, the result is TypeError: Cannot read properties of undefined (reading 'ionPageElement'). On Safari the wording is undefined is not an object.

This is a deterministic callback-level reproduction: it uses the real Ionic router and outlet, pushes a second page, verifies that a back destination exists, returns to the root, then delivers swipeHandler.onEnd(false) as a late cancellation callback. It deliberately models the event ordering rather than attempting to reproduce the physical gesture/animation race. No view-stack or router mocks are used.

After guarding the missing view/page in Ionic Vue's IonRouterOutlet cancellation branch, the result is PASS. Normal swipe cancellation must still hide the entering page when it exists.

# This script can be run from puppet using puppetlabs/powershell:
# exec { 'setup-ansible-remoting':
# command => file("${module_name}/ansible-setup-windows.ps1"),
# provider => powershell,
# logoutput => true,
# }
# To make sure that we can run local scripts. You may need to run this line manually before you can run this script
Set-ExecutionPolicy unrestricted
# Doing this the hard way for old versions of powershell that don't interpolate and don't support Invoke-WebRequest
Fatal error: [Aura\Intl\Exception\CannotFormat] Invalid UTF-8 data in string argument: '/Users/dan/cakebox/Apps/mycake3/src/Template/Error/error500.ctp': U_ILLEGAL_ARGUMENT_ERROR
#0 /Users/dan/cakebox/Apps/mycake3/vendor/cakephp/cakephp/src/I18n/Formatter/IcuFormatter.php(51): Cake\I18n\Formatter\IcuFormatter->_formatMessage('en_US', 'Render {0}', Array)
#1 /Users/dan/cakebox/Apps/mycake3/vendor/aura/intl/src/Aura/Intl/Translator.php(142): Cake\I18n\Formatter\IcuFormatter->format('en_US', 'Render {0}', Array)
#2 /Users/dan/cakebox/Apps/mycake3/vendor/cakephp/cakephp/src/I18n/functions.php(81): Aura\Intl\Translator->translate('Render {0}', Array)
#3 /Users/dan/cakebox/Apps/mycake3/vendor/cakephp/debug_kit/src/Panel/TimerPanel.php(84): __d('debug_kit', 'Render {0}', '/Users/dan/cake...')
#4 /Users/dan/cakebox/Apps/mycake3/vendor/cakephp/cakephp/src/Event/EventManager.php(388): DebugKit\Panel\TimerPanel->DebugKit\Panel\{closure}(Object(Cake\Event\Event), '/Users/dan/cake...')
#5 /Users/dan/cakebox/Apps/myc