Skip to content

Instantly share code, notes, and snippets.

View redgeoff's full-sized avatar

Geoff Cox redgeoff

View GitHub Profile
@redgeoff
redgeoff / get-child-web-elements.robot
Created March 2, 2022 18:59
Get Child WebElements
Get Child WebElements
[Arguments] ${locator} ${child_xpath}
${element} Get WebElement ${locator}
${children} Call Method
... ${element}
... find_elements
... by=xpath value=.${child_xpath}
[Return] ${children}
@redgeoff
redgeoff / open-browser-profiled.robot
Created March 2, 2022 18:55
Open Browser Profiled
Open Browser Profiled
[Arguments] ${url}
${options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver
Call Method ${options} add_argument --user-data-dir\=${USER_DATA_PATH}
Create WebDriver Chrome chrome_options=${options}
Go To ${url}
@redgeoff
redgeoff / click-element-when-ready.robot
Created March 2, 2022 18:50
Click Element When Ready
Click Element When Ready Inner
[Arguments] ${locator}
Wait Until Element Ready ${locator}
${element}= Get WebElement ${locator}
Click Element ${element}
[Return] ${element}
Click Element When Ready
[Arguments] ${locator}
Wait Until Keyword Succeeds 3 1s Click Element When Ready Inner ${locator}
@redgeoff
redgeoff / wait-until-element-ready.robot
Last active March 2, 2022 18:49
Wait Until Element Ready
Wait Until Element Ready Inner
[Arguments] ${locator} ${timeout}=None
Wait Until Page Contains Element ${locator} ${timeout}
Wait Until Element Is Visible ${locator}
Wait Until Element Is Enabled ${locator}
Scroll Element Into View ${locator}
Wait Until Element Is Visible ${locator}
Wait Until Element Is Enabled ${locator}
@redgeoff
redgeoff / lambda.js
Last active August 6, 2021 00:45
lambdaToExpress - lambda.js
import leadService from './lead-service';
// Define a handler for `PUT /lead/:leadId` that accepts the request body payload
// `{ name, email }`
const handler = async (event) => {
// Parse the request parameters
const { name, email } = JSON.parse(event.body);
const { leadId } = event.pathParameters;
// Assume this is the service-layer code that actually performs the updating of
@redgeoff
redgeoff / lamdbaToExpress.js
Last active August 5, 2021 16:00
lamdbaToExpress - lamdbaToExpress.js
// Convert from a Lambda to an ExpressJS handler
const lambdaToExpress = async (handler) => {
return async (req, res) => {
// Repackage the express parameters as an event object for the Lambda
const event = {
body: JSON.stringify(req.body),
headers: req.headers,
queryStringParameters: req.query,
pathParameters: req.params
};
@redgeoff
redgeoff / express.js
Created August 5, 2021 15:59
lambdaToExpress - express.js
import express from 'express';
import cors from 'cors';
import handler from './lambda';
import lambdaToExpress from './lambda-to-express';
const PORT = 3000;
const app = express();
app.use(cors());
app.use(express.json()); // Parse JSON bodies
@redgeoff
redgeoff / express.js
Last active July 27, 2021 14:48
Basic Lambda to serve POST request
import express from 'express';
import cors from 'cors';
import handler from './lambda';
import lambdaToExpress from './lambda-to-express';
const PORT = 3000;
const app = express();
app.use(cors());
app.use(express.json()); // Parse JSON bodies
@redgeoff
redgeoff / first-key.js
Last active January 24, 2021 16:50
Get first key speed test
import each from 'lodash/each';
const getFirstKeyUsingEach = (obj) => {
let firstKey = undefined;
each(obj, (value, key) => {
firstKey = key;
return false; // Exit loop
});
return firstKey;
};
@redgeoff
redgeoff / each-deep.js
Created December 31, 2020 00:32
eachDeep - Recursively traverse object
import each from 'lodash/each';
const eachDeepInner = (collection, iteratee, key) => {
if (key !== undefined) {
iteratee(collection, key)
}
if (collection && typeof collection === 'object') {
each(collection, (value, key) => {
eachDeepInner(value, iteratee, key);