@taqwright/taqwright 0.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +108 -0
- package/dist/auto-appium.d.ts +12 -0
- package/dist/auto-appium.js +77 -0
- package/dist/bin/branding.d.ts +6 -0
- package/dist/bin/branding.js +22 -0
- package/dist/bin/index.d.ts +2 -0
- package/dist/bin/index.js +321 -0
- package/dist/bin/init.d.ts +26 -0
- package/dist/bin/init.js +902 -0
- package/dist/bin/inspect.d.ts +9 -0
- package/dist/bin/inspect.js +91 -0
- package/dist/bin/report-branding.d.ts +2 -0
- package/dist/bin/report-branding.js +42 -0
- package/dist/branding-assets.d.ts +1 -0
- package/dist/branding-assets.js +1 -0
- package/dist/capabilities-helpers.d.ts +7 -0
- package/dist/capabilities-helpers.js +14 -0
- package/dist/capabilities.d.ts +6 -0
- package/dist/capabilities.js +86 -0
- package/dist/config.d.ts +17 -0
- package/dist/config.js +235 -0
- package/dist/discovery-setup.d.ts +1 -0
- package/dist/discovery-setup.js +61 -0
- package/dist/discovery.d.ts +17 -0
- package/dist/discovery.js +55 -0
- package/dist/docs/configuration.html +376 -0
- package/dist/docs/custom-reporters.html +265 -0
- package/dist/docs/docker.html +339 -0
- package/dist/docs/docs.js +173 -0
- package/dist/docs/generating-tests.html +161 -0
- package/dist/docs/images/taqwright-html-report.png +0 -0
- package/dist/docs/index.html +13 -0
- package/dist/docs/installation.html +686 -0
- package/dist/docs/parallel.html +271 -0
- package/dist/docs/running-tests.html +385 -0
- package/dist/docs/styles.css +460 -0
- package/dist/docs/writing-tests.html +565 -0
- package/dist/doctor.d.ts +33 -0
- package/dist/doctor.js +508 -0
- package/dist/expect.d.ts +38 -0
- package/dist/expect.js +96 -0
- package/dist/fixture/artifact-mode.d.ts +2 -0
- package/dist/fixture/artifact-mode.js +7 -0
- package/dist/fixture/index.d.ts +15 -0
- package/dist/fixture/index.js +324 -0
- package/dist/images/taqwright-html-report.png +0 -0
- package/dist/images/taqwright_favicon.png +0 -0
- package/dist/images/taqwright_logo.png +0 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +7 -0
- package/dist/inspector/codegen-appium.d.ts +3 -0
- package/dist/inspector/codegen-appium.js +228 -0
- package/dist/inspector/devices.d.ts +41 -0
- package/dist/inspector/devices.js +422 -0
- package/dist/inspector/locator-suggester.d.ts +23 -0
- package/dist/inspector/locator-suggester.js +539 -0
- package/dist/inspector/recorder.d.ts +128 -0
- package/dist/inspector/recorder.js +162 -0
- package/dist/inspector/server.d.ts +39 -0
- package/dist/inspector/server.js +1210 -0
- package/dist/inspector/session.d.ts +84 -0
- package/dist/inspector/session.js +262 -0
- package/dist/inspector/ui.d.ts +1 -0
- package/dist/inspector/ui.js +5508 -0
- package/dist/keys.d.ts +3 -0
- package/dist/keys.js +28 -0
- package/dist/locator/index.d.ts +206 -0
- package/dist/locator/index.js +1506 -0
- package/dist/logger.d.ts +5 -0
- package/dist/logger.js +5 -0
- package/dist/mobile/index.d.ts +130 -0
- package/dist/mobile/index.js +762 -0
- package/dist/network/android.d.ts +5 -0
- package/dist/network/android.js +87 -0
- package/dist/network/ca.d.ts +10 -0
- package/dist/network/ca.js +136 -0
- package/dist/network/har.d.ts +90 -0
- package/dist/network/har.js +101 -0
- package/dist/network/host-proxy.d.ts +16 -0
- package/dist/network/host-proxy.js +134 -0
- package/dist/network/index.d.ts +26 -0
- package/dist/network/index.js +105 -0
- package/dist/network/ios-sim.d.ts +3 -0
- package/dist/network/ios-sim.js +29 -0
- package/dist/network/proxy.d.ts +13 -0
- package/dist/network/proxy.js +310 -0
- package/dist/providers/appium.d.ts +23 -0
- package/dist/providers/appium.js +288 -0
- package/dist/providers/browserstack/index.d.ts +5 -0
- package/dist/providers/browserstack/index.js +77 -0
- package/dist/providers/browserstack/utils.d.ts +1 -0
- package/dist/providers/browserstack/utils.js +6 -0
- package/dist/providers/cloud.d.ts +53 -0
- package/dist/providers/cloud.js +117 -0
- package/dist/providers/emulator/index.d.ts +8 -0
- package/dist/providers/emulator/index.js +47 -0
- package/dist/providers/index.d.ts +10 -0
- package/dist/providers/index.js +33 -0
- package/dist/providers/lambdatest/index.d.ts +28 -0
- package/dist/providers/lambdatest/index.js +99 -0
- package/dist/providers/lambdatest/utils.d.ts +1 -0
- package/dist/providers/lambdatest/utils.js +6 -0
- package/dist/providers/local/index.d.ts +9 -0
- package/dist/providers/local/index.js +53 -0
- package/dist/providers/local-session.d.ts +16 -0
- package/dist/providers/local-session.js +55 -0
- package/dist/setup/archive.d.ts +2 -0
- package/dist/setup/archive.js +43 -0
- package/dist/setup/avd.d.ts +12 -0
- package/dist/setup/avd.js +103 -0
- package/dist/setup/index.d.ts +6 -0
- package/dist/setup/index.js +55 -0
- package/dist/setup/install-android.d.ts +2 -0
- package/dist/setup/install-android.js +70 -0
- package/dist/setup/install-appium.d.ts +1 -0
- package/dist/setup/install-appium.js +64 -0
- package/dist/setup/install-jdk.d.ts +1 -0
- package/dist/setup/install-jdk.js +58 -0
- package/dist/setup/paths.d.ts +16 -0
- package/dist/setup/paths.js +88 -0
- package/dist/setup/spawn-tool.d.ts +3 -0
- package/dist/setup/spawn-tool.js +11 -0
- package/dist/tracer/index.d.ts +34 -0
- package/dist/tracer/index.js +687 -0
- package/dist/tracer/proxy.d.ts +3 -0
- package/dist/tracer/proxy.js +60 -0
- package/dist/types/index.d.ts +189 -0
- package/dist/types/index.js +6 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +37 -0
- package/package.json +79 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
// ─── Syntax highlighting ──────────────────────────────────────────
|
|
2
|
+
(function () {
|
|
3
|
+
var KW = /\b(?:import|export|from|const|let|var|async|await|function|return|if|else|for|of|in|try|catch|throw|new|class|extends|interface|type|declare|module|true|false|null|undefined)\b/g;
|
|
4
|
+
function esc(s) {
|
|
5
|
+
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
6
|
+
}
|
|
7
|
+
function highlight(src) {
|
|
8
|
+
var out = '';
|
|
9
|
+
var i = 0;
|
|
10
|
+
while (i < src.length) {
|
|
11
|
+
var ch = src[i];
|
|
12
|
+
var two = src.substr(i, 2);
|
|
13
|
+
if (two === '//') {
|
|
14
|
+
var end = src.indexOf('\n', i);
|
|
15
|
+
if (end === -1) end = src.length;
|
|
16
|
+
out += '<span class="tok-com">' + src.slice(i, end) + '</span>';
|
|
17
|
+
i = end;
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (two === '/*') {
|
|
21
|
+
var bend = src.indexOf('*/', i + 2);
|
|
22
|
+
if (bend === -1) bend = src.length;
|
|
23
|
+
else bend += 2;
|
|
24
|
+
out += '<span class="tok-com">' + src.slice(i, bend) + '</span>';
|
|
25
|
+
i = bend;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (ch === '"' || ch === "'" || ch === '`') {
|
|
29
|
+
var quote = ch;
|
|
30
|
+
var j = i + 1;
|
|
31
|
+
while (j < src.length && src[j] !== quote) {
|
|
32
|
+
if (src[j] === '\\') j += 2;
|
|
33
|
+
else j++;
|
|
34
|
+
}
|
|
35
|
+
j++;
|
|
36
|
+
out += '<span class="tok-str">' + src.slice(i, j) + '</span>';
|
|
37
|
+
i = j;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (/[A-Za-z_$]/.test(ch)) {
|
|
41
|
+
var k = i;
|
|
42
|
+
while (k < src.length && /[A-Za-z0-9_$]/.test(src[k])) k++;
|
|
43
|
+
var word = src.slice(i, k);
|
|
44
|
+
var rest = src.slice(k);
|
|
45
|
+
var isCall = /^\s*\(/.test(rest);
|
|
46
|
+
if (KW.test(word)) {
|
|
47
|
+
KW.lastIndex = 0;
|
|
48
|
+
out += '<span class="tok-kw">' + word + '</span>';
|
|
49
|
+
} else if (isCall) {
|
|
50
|
+
out += '<span class="tok-fn">' + word + '</span>';
|
|
51
|
+
} else {
|
|
52
|
+
out += word;
|
|
53
|
+
}
|
|
54
|
+
i = k;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (/[0-9]/.test(ch)) {
|
|
58
|
+
var n = i;
|
|
59
|
+
while (n < src.length && /[0-9._]/.test(src[n])) n++;
|
|
60
|
+
out += '<span class="tok-num">' + src.slice(i, n) + '</span>';
|
|
61
|
+
i = n;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
out += ch;
|
|
65
|
+
i++;
|
|
66
|
+
}
|
|
67
|
+
return out;
|
|
68
|
+
}
|
|
69
|
+
document.querySelectorAll('pre.code > code').forEach(function (el) {
|
|
70
|
+
var raw = el.textContent;
|
|
71
|
+
el.innerHTML = highlight(esc(raw));
|
|
72
|
+
});
|
|
73
|
+
})();
|
|
74
|
+
|
|
75
|
+
// ─── Copy-to-clipboard ───────────────────────────────────────────
|
|
76
|
+
document.querySelectorAll('pre.code .copy').forEach(function (btn) {
|
|
77
|
+
btn.addEventListener('click', function () {
|
|
78
|
+
var code = btn.parentElement.querySelector('code');
|
|
79
|
+
var text = code.textContent;
|
|
80
|
+
var done = function () {
|
|
81
|
+
btn.classList.add('copied');
|
|
82
|
+
btn.textContent = 'Copied';
|
|
83
|
+
setTimeout(function () {
|
|
84
|
+
btn.classList.remove('copied');
|
|
85
|
+
btn.textContent = 'Copy';
|
|
86
|
+
}, 1200);
|
|
87
|
+
};
|
|
88
|
+
if (navigator.clipboard && navigator.clipboard.writeText) {
|
|
89
|
+
navigator.clipboard.writeText(text).then(done, done);
|
|
90
|
+
} else {
|
|
91
|
+
var ta = document.createElement('textarea');
|
|
92
|
+
ta.value = text;
|
|
93
|
+
document.body.appendChild(ta);
|
|
94
|
+
ta.select();
|
|
95
|
+
try { document.execCommand('copy'); } catch (e) {}
|
|
96
|
+
document.body.removeChild(ta);
|
|
97
|
+
done();
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// ─── Right TOC scrollspy ─────────────────────────────────────────
|
|
103
|
+
(function () {
|
|
104
|
+
var links = Array.prototype.slice.call(document.querySelectorAll('aside.onthispage a'));
|
|
105
|
+
var byHref = {};
|
|
106
|
+
links.forEach(function (a) {
|
|
107
|
+
var id = a.getAttribute('href').slice(1);
|
|
108
|
+
if (id) byHref[id] = a;
|
|
109
|
+
});
|
|
110
|
+
var headings = document.querySelectorAll('main h2[id], main h3[id]');
|
|
111
|
+
function onScroll() {
|
|
112
|
+
var top = window.scrollY + 90;
|
|
113
|
+
var current = null;
|
|
114
|
+
for (var i = 0; i < headings.length; i++) {
|
|
115
|
+
if (headings[i].offsetTop <= top) current = headings[i].id;
|
|
116
|
+
}
|
|
117
|
+
links.forEach(function (a) { a.classList.remove('active'); });
|
|
118
|
+
if (current && byHref[current]) byHref[current].classList.add('active');
|
|
119
|
+
}
|
|
120
|
+
window.addEventListener('scroll', onScroll, { passive: true });
|
|
121
|
+
onScroll();
|
|
122
|
+
})();
|
|
123
|
+
|
|
124
|
+
// ─── Theme toggle (light / dark) ─────────────────────────────────
|
|
125
|
+
(function () {
|
|
126
|
+
var btn = document.getElementById('theme-toggle');
|
|
127
|
+
if (!btn) return;
|
|
128
|
+
var root = document.documentElement;
|
|
129
|
+
function sync() {
|
|
130
|
+
var light = root.getAttribute('data-theme') === 'light';
|
|
131
|
+
var label = light ? 'Switch to dark theme' : 'Switch to light theme';
|
|
132
|
+
btn.setAttribute('aria-label', label);
|
|
133
|
+
btn.setAttribute('title', label);
|
|
134
|
+
}
|
|
135
|
+
sync();
|
|
136
|
+
btn.addEventListener('click', function () {
|
|
137
|
+
var light = root.getAttribute('data-theme') === 'light';
|
|
138
|
+
if (light) root.removeAttribute('data-theme');
|
|
139
|
+
else root.setAttribute('data-theme', 'light');
|
|
140
|
+
try { localStorage.setItem('tw-theme', light ? 'dark' : 'light'); } catch (e) {}
|
|
141
|
+
sync();
|
|
142
|
+
});
|
|
143
|
+
})();
|
|
144
|
+
|
|
145
|
+
// ─── Collapsible sidebar groups ──────────────────────────────────
|
|
146
|
+
(function () {
|
|
147
|
+
var KEY = 'tw-sidebar-collapsed';
|
|
148
|
+
var collapsed = {};
|
|
149
|
+
try { collapsed = JSON.parse(localStorage.getItem(KEY) || '{}') || {}; } catch (e) {}
|
|
150
|
+
document.querySelectorAll('aside.sidebar h3').forEach(function (h) {
|
|
151
|
+
var name = h.textContent.trim();
|
|
152
|
+
if (collapsed[name]) h.classList.add('collapsed');
|
|
153
|
+
h.addEventListener('click', function () {
|
|
154
|
+
h.classList.toggle('collapsed');
|
|
155
|
+
collapsed[name] = h.classList.contains('collapsed');
|
|
156
|
+
try { localStorage.setItem(KEY, JSON.stringify(collapsed)); } catch (e) {}
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
})();
|
|
160
|
+
|
|
161
|
+
// ─── Sidebar mobile drawer toggle ────────────────────────────────
|
|
162
|
+
var toggle = document.getElementById('menu-toggle');
|
|
163
|
+
var sidebar = document.getElementById('sidebar');
|
|
164
|
+
if (toggle && sidebar) {
|
|
165
|
+
toggle.addEventListener('click', function () {
|
|
166
|
+
sidebar.classList.toggle('open');
|
|
167
|
+
});
|
|
168
|
+
sidebar.querySelectorAll('a').forEach(function (a) {
|
|
169
|
+
a.addEventListener('click', function () {
|
|
170
|
+
sidebar.classList.remove('open');
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Generating tests · taqwright</title>
|
|
7
|
+
<meta name="description" content="Record a runnable taqwright spec with the browser-based inspector and codegen — live locator picking, device driving, and assertions.">
|
|
8
|
+
<link rel="stylesheet" href="styles.css">
|
|
9
|
+
<script>try{var t=localStorage.getItem('tw-theme');if(t==='light'||(!t&&typeof matchMedia==='function'&&matchMedia('(prefers-color-scheme: light)').matches))document.documentElement.setAttribute('data-theme','light');}catch(e){}</script>
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
|
|
13
|
+
<header class="topbar">
|
|
14
|
+
<button class="menu-toggle" id="menu-toggle" aria-label="Toggle navigation">☰</button>
|
|
15
|
+
<a class="brand" href="installation.html"><span class="accent">taq</span>wright</a>
|
|
16
|
+
<nav class="primary">
|
|
17
|
+
<a href="installation.html" class="current">Docs</a>
|
|
18
|
+
<a href="generating-tests.html">Inspector</a>
|
|
19
|
+
<a href="writing-tests.html#actions">API</a>
|
|
20
|
+
</nav>
|
|
21
|
+
<span class="spacer"></span>
|
|
22
|
+
<div class="search" title="Search (placeholder)">
|
|
23
|
+
<span>Search docs…</span>
|
|
24
|
+
<span class="kbd">⌘K</span>
|
|
25
|
+
</div>
|
|
26
|
+
<button class="theme-toggle" id="theme-toggle" aria-label="Switch to light theme" title="Switch to light theme"></button>
|
|
27
|
+
<a class="gh-link" href="https://github.com/taqelah/taqwright" title="GitHub">
|
|
28
|
+
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 .5a11.5 11.5 0 0 0-3.64 22.42c.58.1.79-.25.79-.55v-2.02c-3.2.7-3.88-1.36-3.88-1.36-.52-1.33-1.28-1.68-1.28-1.68-1.05-.71.08-.7.08-.7 1.16.08 1.77 1.19 1.77 1.19 1.03 1.77 2.7 1.26 3.36.96.1-.75.4-1.26.73-1.55-2.55-.29-5.24-1.28-5.24-5.7 0-1.26.45-2.29 1.19-3.1-.12-.29-.52-1.47.11-3.06 0 0 .97-.31 3.18 1.18a11 11 0 0 1 5.79 0c2.21-1.49 3.18-1.18 3.18-1.18.63 1.59.23 2.77.11 3.06.74.81 1.18 1.84 1.18 3.1 0 4.43-2.7 5.4-5.27 5.69.41.36.78 1.06.78 2.14v3.17c0 .31.21.66.8.55A11.5 11.5 0 0 0 12 .5Z"/></svg>
|
|
29
|
+
</a>
|
|
30
|
+
</header>
|
|
31
|
+
|
|
32
|
+
<div class="shell">
|
|
33
|
+
|
|
34
|
+
<aside class="sidebar" id="sidebar">
|
|
35
|
+
<h3>Getting started</h3>
|
|
36
|
+
<ul>
|
|
37
|
+
<li><a href="installation.html">Installation</a></li>
|
|
38
|
+
<li><a href="writing-tests.html">Writing tests</a></li>
|
|
39
|
+
<li><a href="generating-tests.html" class="current">Generating tests</a></li>
|
|
40
|
+
<li class="sub"><a href="generating-tests.html#inspector">Inspector & codegen</a></li>
|
|
41
|
+
<li class="sub"><a href="generating-tests.html#codegen">Codegen</a></li>
|
|
42
|
+
<li class="sub"><a href="generating-tests.html#pause">Debug a live test</a></li>
|
|
43
|
+
<li><a href="running-tests.html">Running & debugging</a></li>
|
|
44
|
+
<li><a href="custom-reporters.html">Custom reporters</a></li>
|
|
45
|
+
<li><a href="parallel.html">Parallel runs</a></li>
|
|
46
|
+
<li><a href="docker.html">Run in Docker</a></li>
|
|
47
|
+
</ul>
|
|
48
|
+
|
|
49
|
+
<h3>Taqwright Test</h3>
|
|
50
|
+
<ul>
|
|
51
|
+
<li><a href="configuration.html">Configuration</a></li>
|
|
52
|
+
</ul>
|
|
53
|
+
|
|
54
|
+
<h3>Reference</h3>
|
|
55
|
+
<ul>
|
|
56
|
+
<li><a href="https://playwright.dev/docs/intro">Playwright runner ↗</a></li>
|
|
57
|
+
<li><a href="https://appium.io/docs/en/latest/">Appium 3 ↗</a></li>
|
|
58
|
+
</ul>
|
|
59
|
+
</aside>
|
|
60
|
+
|
|
61
|
+
<main>
|
|
62
|
+
|
|
63
|
+
<div class="breadcrumb">
|
|
64
|
+
<a href="installation.html">Docs</a> / Getting started / Generating tests
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<h1>Generating tests</h1>
|
|
68
|
+
<p class="lede">
|
|
69
|
+
Don't hand-write locators — pick them. The taqwright <strong>inspector</strong> is a browser-based device viewer that ranks candidate selectors against the live screen, and <strong>codegen</strong> is the same inspector with recording on, emitting a runnable spec as you drive the app.
|
|
70
|
+
</p>
|
|
71
|
+
|
|
72
|
+
<h2 id="inspector">Inspector & codegen</h2>
|
|
73
|
+
<p>The inspector is a browser-based device viewer + locator picker. Run:</p>
|
|
74
|
+
|
|
75
|
+
<div class="codeblock"><pre class="code"><button class="copy">Copy</button><code>npx taqwright codegen</code></pre></div>
|
|
76
|
+
|
|
77
|
+
<p>It boots a local server (default port <code>5274</code>) and opens your browser. From the inspector you can:</p>
|
|
78
|
+
<ul>
|
|
79
|
+
<li><strong>Connect to a device</strong> — local Appium (the inspector will spawn Appium if nothing is listening) or a cloud provider (BrowserStack, LambdaTest).</li>
|
|
80
|
+
<li><strong>Pick a locator</strong> — tap any element on the live screen. The inspector verifies multiple candidate locators against the device and ranks them by uniqueness and stability. Non-unique candidates get auto-suffixed with <code>.nth(i)</code> so you always get a unique selector.</li>
|
|
81
|
+
<li><strong>Drive the device</strong> — click, double-tap, long press, fill, swipe, scroll, pinch, drag, hardware buttons, check/uncheck, focus/blur, press, selectOption.</li>
|
|
82
|
+
<li><strong>Assert</strong> — visible / hidden / enabled / checked / text / value / count / attribute / editable / focused / empty / inViewport / attached. Each assertion verifies on the live device first; if it would fail, you get a "Record anyway?" prompt.</li>
|
|
83
|
+
</ul>
|
|
84
|
+
|
|
85
|
+
<h2 id="codegen">Codegen</h2>
|
|
86
|
+
<p>Codegen is the same inspector with recording on by default:</p>
|
|
87
|
+
|
|
88
|
+
<div class="codeblock"><pre class="code"><button class="copy">Copy</button><code>npx taqwright codegen</code></pre></div>
|
|
89
|
+
|
|
90
|
+
<p>Every action you perform appends a line of taqwright source to the generated spec, which you can copy out as a runnable test. The emitted file is a full <code>import { test, expect } from 'taqwright'; test('recorded test', …)</code> spec — drop it under <code>tests/</code> and <code>npx taqwright test</code> runs it as-is.</p>
|
|
91
|
+
|
|
92
|
+
<h2 id="pause">Debug a live test</h2>
|
|
93
|
+
<div class="callout">
|
|
94
|
+
<strong>Use the inspector to debug a live test.</strong>
|
|
95
|
+
Drop <code>await mobile.pause()</code> mid-test. When the test hits that line, the inspector attaches to the running WebDriver session (no new Appium boot), opens in your browser, and the test resumes when you click <strong>Resume</strong> in the UI. Set <code>PWDEBUG=0</code> to make <code>pause()</code> a no-op in CI without removing it.
|
|
96
|
+
</div>
|
|
97
|
+
<p>
|
|
98
|
+
This is the interactive counterpart to post-mortem <a href="running-tests.html#tracing">tracing</a> — pause when you want to poke at a stuck step by hand, trace when you want the whole timeline after the fact.
|
|
99
|
+
</p>
|
|
100
|
+
|
|
101
|
+
<div class="pager">
|
|
102
|
+
<a href="writing-tests.html">
|
|
103
|
+
<div class="label">← Previous</div>
|
|
104
|
+
<div class="title">Writing tests</div>
|
|
105
|
+
</a>
|
|
106
|
+
<a class="next" href="running-tests.html">
|
|
107
|
+
<div class="label">Next →</div>
|
|
108
|
+
<div class="title">Running & debugging tests</div>
|
|
109
|
+
</a>
|
|
110
|
+
</div>
|
|
111
|
+
|
|
112
|
+
</main>
|
|
113
|
+
|
|
114
|
+
<aside class="onthispage">
|
|
115
|
+
<h4>On this page</h4>
|
|
116
|
+
<ol>
|
|
117
|
+
<li><a href="#inspector">Inspector & codegen</a></li>
|
|
118
|
+
<li><a href="#codegen">Codegen</a></li>
|
|
119
|
+
<li><a href="#pause">Debug a live test</a></li>
|
|
120
|
+
</ol>
|
|
121
|
+
</aside>
|
|
122
|
+
|
|
123
|
+
</div>
|
|
124
|
+
|
|
125
|
+
<footer class="bot">
|
|
126
|
+
<div class="cols">
|
|
127
|
+
<div>
|
|
128
|
+
<h5>Getting started</h5>
|
|
129
|
+
<ul>
|
|
130
|
+
<li><a href="installation.html">Installation</a></li>
|
|
131
|
+
<li><a href="writing-tests.html">Writing tests</a></li>
|
|
132
|
+
<li><a href="generating-tests.html">Generating tests</a></li>
|
|
133
|
+
<li><a href="running-tests.html">Running & debugging</a></li>
|
|
134
|
+
</ul>
|
|
135
|
+
</div>
|
|
136
|
+
<div>
|
|
137
|
+
<h5>Guides</h5>
|
|
138
|
+
<ul>
|
|
139
|
+
<li><a href="custom-reporters.html">Custom reporters</a></li>
|
|
140
|
+
<li><a href="parallel.html">Parallel runs</a></li>
|
|
141
|
+
<li><a href="docker.html">Run in Docker</a></li>
|
|
142
|
+
<li><a href="writing-tests.html#actions">API surface</a></li>
|
|
143
|
+
</ul>
|
|
144
|
+
</div>
|
|
145
|
+
<div>
|
|
146
|
+
<h5>Built on</h5>
|
|
147
|
+
<ul>
|
|
148
|
+
<li><a href="https://playwright.dev/">Playwright</a></li>
|
|
149
|
+
<li><a href="https://appium.io/">Appium 3</a></li>
|
|
150
|
+
</ul>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
<div class="copy">
|
|
154
|
+
Apache-2.0 licensed · Built on Playwright + Appium
|
|
155
|
+
</div>
|
|
156
|
+
</footer>
|
|
157
|
+
|
|
158
|
+
<script src="docs.js"></script>
|
|
159
|
+
|
|
160
|
+
</body>
|
|
161
|
+
</html>
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta http-equiv="refresh" content="0; url=installation.html">
|
|
6
|
+
<link rel="canonical" href="installation.html">
|
|
7
|
+
<title>taqwright docs</title>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<p>Redirecting to <a href="installation.html">Installation</a>…</p>
|
|
11
|
+
<script>location.replace('installation.html');</script>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|