Socket
Socket
Sign inDemoInstall

@atomic-testing/component-driver-html

Package Overview
Dependencies
Maintainers
1
Versions
49
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@atomic-testing/component-driver-html - npm Package Compare versions

Comparing version 0.22.0 to 0.23.0

dist/components/HTMLOptionDriver.d.ts

11

dist/components/HTMLSelectDriver.d.ts

@@ -1,6 +0,15 @@

import { ComponentDriver, IInputDriver, Nullable } from '@atomic-testing/core';
import { ComponentDriver, IInputDriver, Nullable, PartLocatorType } from '@atomic-testing/core';
import { HTMLOptionDriver } from './HTMLOptionDriver';
type ValueT = string | readonly string[];
export declare class HTMLSelectDriver extends ComponentDriver<{}> implements IInputDriver<Nullable<ValueT>> {
isMultiple(): Promise<boolean>;
getValue(): Promise<Nullable<ValueT>>;
setValue(value: Nullable<ValueT>): Promise<boolean>;
getOptionByLocator(itemLocator: PartLocatorType): Promise<HTMLOptionDriver | null>;
getOptionByIndex(index: number): Promise<HTMLOptionDriver | null>;
getValuesByLabels(labels: readonly string[]): Promise<readonly string[]>;
selectByLabel(label: string | readonly string[]): Promise<void>;
getSelectedLabel(isMultiple: true): Promise<readonly string[] | null>;
getSelectedLabel(isMultiple: false): Promise<string | null>;
getSelectedLabel(): Promise<string | null>;
isDisabled(): Promise<boolean>;

@@ -7,0 +16,0 @@ isReadonly(): Promise<boolean>;

@@ -14,7 +14,13 @@ "use strict";

const core_1 = require("@atomic-testing/core");
const HTMLOptionDriver_1 = require("./HTMLOptionDriver");
class HTMLSelectDriver extends core_1.ComponentDriver {
isMultiple() {
return __awaiter(this, void 0, void 0, function* () {
const multiple = yield this.interactor.getAttribute(this.locator, 'multiple');
return multiple != null;
});
}
getValue() {
return __awaiter(this, void 0, void 0, function* () {
const multiple = yield this.interactor.getAttribute(this.locator, 'multiple');
const isMultiple = multiple != null;
const isMultiple = yield this.isMultiple();
const values = yield this.interactor.getSelectValues(this.locator);

@@ -35,2 +41,61 @@ const returnedValue = isMultiple ? values : values === null || values === void 0 ? void 0 : values[0];

}
getOptionByLocator(itemLocator) {
return __awaiter(this, void 0, void 0, function* () {
const locator = core_1.locatorUtil.append(this.locator, itemLocator);
const exists = yield this.interactor.exists(locator);
if (exists) {
return new HTMLOptionDriver_1.HTMLOptionDriver(locator, this.interactor);
}
else {
return null;
}
});
}
getOptionByIndex(index) {
return __awaiter(this, void 0, void 0, function* () {
const itemLocator = {
type: core_1.LocatorType.Css,
selector: `option:nth-of-type(${index + 1})`,
};
return this.getOptionByLocator(itemLocator);
});
}
getValuesByLabels(labels) {
return __awaiter(this, void 0, void 0, function* () {
const labelSet = new Set(labels);
let index = 0;
let item = yield this.getOptionByIndex(index);
const values = [];
while (item != null) {
const label = yield item.label();
const value = yield item.value();
if (label != null && labelSet.has(label) && value != null) {
values.push(value);
}
index++;
item = yield this.getOptionByIndex(index);
}
return values;
});
}
selectByLabel(label) {
return __awaiter(this, void 0, void 0, function* () {
const labels = Array.isArray(label) ? label : [label];
const values = yield this.getValuesByLabels(labels);
yield this.setValue(values);
});
}
getSelectedLabel(isMultiple) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
if (yield this.exists()) {
const labels = yield this.interactor.getSelectLabels(this.locator);
if (isMultiple) {
return labels;
}
return (_a = labels[0]) !== null && _a !== void 0 ? _a : null;
}
return null;
});
}
isDisabled() {

@@ -37,0 +102,0 @@ return this.interactor.isDisabled(this.locator);

@@ -7,2 +7,3 @@ export { HTMLAnchorDriver } from './components/HTMLAnchorDriver';

export { HTMLHiddenInputDriver } from './components/HTMLHiddenInputDriver';
export { HTMLOptionDriver } from './components/HTMLOptionDriver';
export { HTMLRadioButtonGroupDriver } from './components/HTMLRadioButtonGroupDriver';

@@ -9,0 +10,0 @@ export { HTMLSelectDriver } from './components/HTMLSelectDriver';

4

dist/index.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.HTMLTextInputDriver = exports.HTMLTextAreaDriver = exports.HTMLSelectDriver = exports.HTMLRadioButtonGroupDriver = exports.HTMLHiddenInputDriver = exports.HTMLElementDriver = exports.HTMLCheckboxGroupDriver = exports.HTMLCheckboxDriver = exports.HTMLButtonDriver = exports.HTMLAnchorDriver = void 0;
exports.HTMLTextInputDriver = exports.HTMLTextAreaDriver = exports.HTMLSelectDriver = exports.HTMLRadioButtonGroupDriver = exports.HTMLOptionDriver = exports.HTMLHiddenInputDriver = exports.HTMLElementDriver = exports.HTMLCheckboxGroupDriver = exports.HTMLCheckboxDriver = exports.HTMLButtonDriver = exports.HTMLAnchorDriver = void 0;
var HTMLAnchorDriver_1 = require("./components/HTMLAnchorDriver");

@@ -16,2 +16,4 @@ Object.defineProperty(exports, "HTMLAnchorDriver", { enumerable: true, get: function () { return HTMLAnchorDriver_1.HTMLAnchorDriver; } });

Object.defineProperty(exports, "HTMLHiddenInputDriver", { enumerable: true, get: function () { return HTMLHiddenInputDriver_1.HTMLHiddenInputDriver; } });
var HTMLOptionDriver_1 = require("./components/HTMLOptionDriver");
Object.defineProperty(exports, "HTMLOptionDriver", { enumerable: true, get: function () { return HTMLOptionDriver_1.HTMLOptionDriver; } });
var HTMLRadioButtonGroupDriver_1 = require("./components/HTMLRadioButtonGroupDriver");

@@ -18,0 +20,0 @@ Object.defineProperty(exports, "HTMLRadioButtonGroupDriver", { enumerable: true, get: function () { return HTMLRadioButtonGroupDriver_1.HTMLRadioButtonGroupDriver; } });

{
"name": "@atomic-testing/component-driver-html",
"version": "0.22.0",
"version": "0.23.0",
"description": "HTML component driver for atomic-testing",

@@ -25,3 +25,3 @@ "main": "dist/index.js",

"dependencies": {
"@atomic-testing/core": "0.22.0"
"@atomic-testing/core": "0.23.0"
},

@@ -28,0 +28,0 @@ "devDependencies": {

@@ -1,9 +0,22 @@

import { ComponentDriver, IInputDriver, Nullable } from '@atomic-testing/core';
import {
ComponentDriver,
IInputDriver,
LocatorType,
locatorUtil,
Nullable,
PartLocatorType,
} from '@atomic-testing/core';
import { HTMLOptionDriver } from './HTMLOptionDriver';
type ValueT = string | readonly string[];
export class HTMLSelectDriver extends ComponentDriver<{}> implements IInputDriver<Nullable<ValueT>> {
async isMultiple(): Promise<boolean> {
const multiple = await this.interactor.getAttribute(this.locator, 'multiple');
return multiple != null;
}
async getValue(): Promise<Nullable<ValueT>> {
const multiple = await this.interactor.getAttribute(this.locator, 'multiple');
const isMultiple = multiple != null;
const isMultiple = await this.isMultiple();
const values = await this.interactor.getSelectValues(this.locator);

@@ -23,2 +36,57 @@ const returnedValue = isMultiple ? values : values?.[0];

async getOptionByLocator(itemLocator: PartLocatorType): Promise<HTMLOptionDriver | null> {
const locator = locatorUtil.append(this.locator, itemLocator);
const exists = await this.interactor.exists(locator);
if (exists) {
return new HTMLOptionDriver(locator, this.interactor);
} else {
return null;
}
}
async getOptionByIndex(index: number): Promise<HTMLOptionDriver | null> {
const itemLocator: PartLocatorType = {
type: LocatorType.Css,
selector: `option:nth-of-type(${index + 1})`,
};
return this.getOptionByLocator(itemLocator);
}
async getValuesByLabels(labels: readonly string[]): Promise<readonly string[]> {
const labelSet = new Set(labels);
let index = 0;
let item: HTMLOptionDriver | null = await this.getOptionByIndex(index);
const values: string[] = [];
while (item != null) {
const label = await item.label();
const value = await item.value();
if (label != null && labelSet.has(label) && value != null) {
values.push(value);
}
index++;
item = await this.getOptionByIndex(index);
}
return values;
}
async selectByLabel(label: string | readonly string[]): Promise<void> {
const labels = Array.isArray(label) ? label : [label];
const values = await this.getValuesByLabels(labels);
await this.setValue(values);
}
async getSelectedLabel(isMultiple: true): Promise<readonly string[] | null>;
async getSelectedLabel(isMultiple: false): Promise<string | null>;
async getSelectedLabel(): Promise<string | null>;
async getSelectedLabel(isMultiple?: boolean) {
if (await this.exists()) {
const labels = await this.interactor.getSelectLabels(this.locator);
if (isMultiple) {
return labels;
}
return labels![0] ?? null;
}
return null;
}
isDisabled(): Promise<boolean> {

@@ -25,0 +93,0 @@ return this.interactor.isDisabled(this.locator);

@@ -7,2 +7,3 @@ export { HTMLAnchorDriver } from './components/HTMLAnchorDriver';

export { HTMLHiddenInputDriver } from './components/HTMLHiddenInputDriver';
export { HTMLOptionDriver } from './components/HTMLOptionDriver';
export { HTMLRadioButtonGroupDriver } from './components/HTMLRadioButtonGroupDriver';

@@ -9,0 +10,0 @@ export { HTMLSelectDriver } from './components/HTMLSelectDriver';

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc