Tasty client runs inside JavaScript sandbox, so it simply can't emulate real interaction, as debugging protocols or WebDriver can.
Currently Tasty can't run on clients without native WebSocket support.
However, the transport layer could be separated and implemented for special purposes. Take a look at client configuration and Server.onConnection
method if this is the case.
When using auto-focus elements (such as <input />
), you could encounter cannot type into active node <body />
error when window loses its focus, which causes type
and paste
tools to fail.
If you don't want to focus such elements explicitly (using click
or something else), make sure that client window remain focused during tests.
For WebDriver clients you could maximize window or use alert()
workaround to focus reliably.
Additionally, Chrome DevTools could force current tab to lose focus, with the same results.
Remember, you can always click on something to reset autofocus when you don't need to test it.
Currently Tasty can't find text +1 123 456-78-90
in the following case:
+1 <input type="tel" placeholder="123 456-78-90" />
In other words, it's too hard to join text fragments of textContent
, value/placeholder
, :before/:after
etc.
Also, search cannot detect text from alt
attribute yet.
Border images are currently skipped.
Also, <audio />
, <video />
, <picture />
, <object />
and <embed />
are not supported out-of-the-box.
exec(() => {
...
});
The lambda above will be called on the client "as is", so if it doesn't support arrow functions, the call will fail. It's more safe to always use function
literals in such cases.
Tasty console output could be wrong or confusing if window.console
is modified by your application. If this is the case, make sure Tasty client code is runnig prior to application code.
Tasty server uses port 8765
by default, which could be unavailable on remote MacOS or iOS devices. Try to set different port if you use Selenium hub with tunneling.
ChromeDriver has an ancient bug that prevents logs to be fully captured. You can force Tasty client to log every message as a single string, by at least two ways.
Either pass a logger configuration to the client...
const server = new Tasty(...);
server.on('client', (id, client) => {
client.config.logger = {stringify: true};
});
...or provide the same configuration (or even a custom logger) to the client constructor.
const client = new Tasty({
...
logger: {stringify: true}
});
Unfortunately, Jest has no documented API to use its runner programmatically.
See Runner base class.
Some elements of browser itself, such as tooltips from title
attribute or HTML5 Form validation messages, could be potentially detected, but currently aren't supported.
Tasty server is able to work with several clients simultaneously. But there are no clear way to separate logs from different clients yet.
Tasty client currently can't detect that tasty.js
is loaded more than once on the page, e.g. included during build and then embedded by Tasty static server. This leads to duplicated clients which obviously fail all the tests.
Not supported yet.
Not supported yet.