The death of fibers and synchronous mode
Promises were added to JavaScript to make asynchronous callbacks to functions easier to implement. Functions were passed without parenthesis, making them visibly similar to variables and objects. Then, the async and await keywords were also added as syntactic sugar to make promises and callbacks easier. However, way back in 2014, there was the node-fibers
package project, which implicitly wrapped statements as callbacks in the background.
Up until version 7.0, WebdriverIO leveraged the node-fibers
package as part of the @wdio/sync
feature. This meant all browser methods would execute synchronously without callbacks, promises, or await. This was a brilliant trade-off for WebdriverIO framework architects! It avoided the time travel issues while making the code less complex.
Unfortunately, the node-fibers
project was discontinued in 2021. WebdriverIO was forced to notify users of two solutions – they could lock Node to the last supported...