alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
chrome --headless --disable-gpu --remote-debugging-port=9222
- Don’t forget to turn off
control_flow
, you cannot use a mix ofasync/await
and thecontrol flow
:async/await
causes the control flow to become unreliable. So if youasync/await
anywhere in a spec, you should set theSELENIUM_PROMISE_MANAGER: false
- Note: To write and run native
async/await
test, the node.js version should be greater than or equal to 8.0, and Jasmine version should be greater than or equal to 2.7
- It's the slowest and most brittle locator strategy of all
- Markup is very easily subject to change and therefore xpath locators require a lot of maintenance
- xpath expressions are unreadable and very hard to debug
pm2 start google-chrome
--interpreter none
--
--headless
--no-sandbox
--disable-gpu
--disable-translate
--disable-extensions
--disable-background-networking
--safebrowsing-disable-auto-update \
gifify <filename.mpy> -o <filename.gif>
const wait = ms => new Promise(resolve => setTimeout(resolve, ms)); | |
async function main() { | |
console.log("waiting ...."); | |
await wait(5000); | |
console.log("5 seconds have passed!"); | |
} | |
main(); |
To understand this binding, we have to understand the call-site: the location in code where a function is called (not where it's declared). We must inspect the call-site to answer the question: what's this this a reference to?
The first rule we will examine comes from the most common case of function calls: standalone function invocation. Think of this this rule as the default catch-all rule when none of the other rules apply.
function foo() {
console.log( this.a );
}
add new domain or subdomain to existing letsEncrypt certification with certbot: https://superuser.com/questions/1432541/how-to-add-a-domain-to-existing-certificate-generated-by-let-s-encrypt-certbot