Source: test/support/Driver.js

const _ = require("lodash");

/**
 * Driver Related Methods
 */
class Driver {
	/**
     * Abstract
     */
	constructor() {
		if (new.target === Driver) {
			throw new Error("Driver can't be instantiated directly.");
		}
	}

	/**
     * Factory
     * @param {String} name - name
     */
	static create(name) {
		const fileName = `./drivers/${_.capitalize(name)}Driver.js`;
		let ClassName;

		try {
			ClassName = require(fileName);
			return new ClassName();
		} catch (error) {
			throw new Error(`${ClassName} driver not found`);
		}
	}

	/**
     * Build the driver with capabilities
     * @returns {WebDriver} Driver object
     */
	build() {}
}

module.exports = Driver;