function testOpFile(browser, opName, filename, cssSelector, output, args=[], waitWindow=1000) {
    browser.perform(function() {
        console.log(`Current test: ${opName}`);
    });
    utils.loadRecipe(browser, opName, "", args);
    utils.uploadFile(browser, filename);
    browser.pause(100).waitForElementVisible("#stale-indicator", 5000);
    utils.bake(browser);

    if (!cssSelector) {
        // Text output
        utils.expectOutput(browser, output, true, waitWindow);
    } else if (typeof output === "string") {
        // HTML output - string match
        browser.expect.element("#output-html " + cssSelector).text.that.equals(output);
    } else if (output instanceof RegExp) {
        // HTML output - RegEx match
        browser.expect.element("#output-html " + cssSelector).text.that.matches(output);
    }
}
@function
Clears the current recipe and tests a new File-based operation.

@param {Browser} browser - Nightwatch client
@param {string|Array<string>} opName - name of operation to be tested array for multiple ops
@param {string} filename - filename of file from samples directory
@param {string|boolean} cssSelector - CSS selector for HTML output or false for normal text output
@param {string|RegExp} output - expected output
@param {Array<string>|Array<Array<string>>} [args=[]] - arguments, nested if multiple ops
@param {number} [waitWindow=1000] - The number of milliseconds to wait for the output to be correct