From 1b0bc3dc57feab0c4267e5ac29a829c3564a74cb Mon Sep 17 00:00:00 2001 From: lenaChenv Date: Wed, 30 Oct 2019 17:25:23 +0800 Subject: [PATCH 1/3] fix-bugfix(define-elements): fix define elements bug --- packages/tees-drivers/src/base/index.js | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/packages/tees-drivers/src/base/index.js b/packages/tees-drivers/src/base/index.js index c1e0c36..f9cac26 100644 --- a/packages/tees-drivers/src/base/index.js +++ b/packages/tees-drivers/src/base/index.js @@ -15,21 +15,13 @@ class Query { } getSelector(selector) { + const labelSign = /^@\s*/; - const isUsingCssSelector = !this._label || labelSign.test(selector); - if (isUsingCssSelector) { - return selector - .replace(labelSign, '') - .split(' ') - .map((_selector) => { - const [labelSelector, index] = _selector.split(':'); - const childSelector = index ? - `:nth-${/-/.test(index) ? 'last-' : ''}child(${index.replace('-', '')})` : ''; - return `[${this._label}="${labelSelector}"]${childSelector}`; - }) - .join(' '); - } - return selector; + return selector.split(' ').map(_selector => { + const [labelSelector, index] = _selector.replace(/^@\s*/, '').split(':'); + return labelSign.test(_selector) ? `[${this._label}="${labelSelector}"]${index ? + `:nth-${/-/.test(index) ? 'last-' : ''}child(${index.replace('-', '')})` : ''}` : _selector; + }).join(' ') } async waitFor(param, options, ...args) { From da2b7e658444140f16289bbe52ed5497e5115c0a Mon Sep 17 00:00:00 2001 From: lenaChenv Date: Fri, 1 Nov 2019 10:34:53 +0800 Subject: [PATCH 2/3] fix-bugfix(define-elements): fix define elements bug --- .../__test__/src/base/index.test.js | 29 +++++++++++++++++++ packages/tees-drivers/src/base/index.js | 9 ++++-- 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 packages/tees-drivers/__test__/src/base/index.test.js diff --git a/packages/tees-drivers/__test__/src/base/index.test.js b/packages/tees-drivers/__test__/src/base/index.test.js new file mode 100644 index 0000000..57cc013 --- /dev/null +++ b/packages/tees-drivers/__test__/src/base/index.test.js @@ -0,0 +1,29 @@ +const { + Query +} = require('../../../src/base/index'); + +describe('base/index unit test', () => { + + const query = new Query('', { label: 'class' }); + + test('getSelector, the selector is @searchBoxForm @searchBox', () => { + expect(query.getSelector(`@searchBoxForm @searchBox`)).toEqual(`[class="searchBoxForm"] [class="searchBox"]`); + }); + + test('getSelector, the selector is @searchBoxForm input', () => { + expect(query.getSelector(`@searchBoxForm input`)).toEqual(`[class="searchBoxForm"] input`); + }); + + test('getSelector, the selector is [class="searchBoxForm"] input', () => { + expect(query.getSelector(`[class="searchBoxForm"] input`)).toEqual(`[class="searchBoxForm"] input`); + }); + + test('getSelector, the selector is @b_searchboxForm:1 input', () => { + expect(query.getSelector(`@b_searchboxForm:1`)).toEqual(`[class="b_searchboxForm"]:nth-child(1)`); + }); + + test('getSelector, the selector is @b_searchboxForm:-1 input', () => { + expect(query.getSelector(`@b_searchboxForm:-1`)).toEqual(`[class="b_searchboxForm"]:nth-last-child(1)`); + }); +}); + diff --git a/packages/tees-drivers/src/base/index.js b/packages/tees-drivers/src/base/index.js index f9cac26..c3b0a40 100644 --- a/packages/tees-drivers/src/base/index.js +++ b/packages/tees-drivers/src/base/index.js @@ -15,12 +15,15 @@ class Query { } getSelector(selector) { - const labelSign = /^@\s*/; return selector.split(' ').map(_selector => { const [labelSelector, index] = _selector.replace(/^@\s*/, '').split(':'); - return labelSign.test(_selector) ? `[${this._label}="${labelSelector}"]${index ? - `:nth-${/-/.test(index) ? 'last-' : ''}child(${index.replace('-', '')})` : ''}` : _selector; + if (labelSign.test(_selector)) { + return `[${this._label}="${labelSelector}"]${index ? + `:nth-${/-/.test(index) ? 'last-' : ''}child(${index.replace('-', '')})` : ''}` + } else { + return _selector; + } }).join(' ') } From 08c38e955f9fbe961a17aa4cfcbeb41614aefc07 Mon Sep 17 00:00:00 2001 From: lenaChenv Date: Tue, 5 Nov 2019 09:22:22 +0800 Subject: [PATCH 3/3] feat(ut): base/index unit test --- .../__test__/src/base/index.test.js | 51 ++++++++++++++----- 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/packages/tees-drivers/__test__/src/base/index.test.js b/packages/tees-drivers/__test__/src/base/index.test.js index 57cc013..3cdaf38 100644 --- a/packages/tees-drivers/__test__/src/base/index.test.js +++ b/packages/tees-drivers/__test__/src/base/index.test.js @@ -2,28 +2,55 @@ const { Query } = require('../../../src/base/index'); -describe('base/index unit test', () => { +describe('base/index unit test for getSelector', () => { - const query = new Query('', { label: 'class' }); + let query; + beforeAll(() => { + query = new Query('', { label: 'data-auto-id' }); + }) - test('getSelector, the selector is @searchBoxForm @searchBox', () => { - expect(query.getSelector(`@searchBoxForm @searchBox`)).toEqual(`[class="searchBoxForm"] [class="searchBox"]`); + test('The selector is @searchBoxForm @searchBox then return [data-auto-id="searchBoxForm"] [data-auto-id="searchBox"]', () => { + expect(query.getSelector(`@searchBoxForm @searchBox`)).toEqual(`[data-auto-id="searchBoxForm"] [data-auto-id="searchBox"]`); }); - test('getSelector, the selector is @searchBoxForm input', () => { - expect(query.getSelector(`@searchBoxForm input`)).toEqual(`[class="searchBoxForm"] input`); + test('The selector is @searchBoxForm input[data-auto-id-test="searchBox"] then return [data-auto-id="searchBoxForm"] input[data-auto-id-test="searchBox"]', () => { + expect(query.getSelector(`@searchBoxForm input[data-auto-id-test="searchBox"]`)).toEqual(`[data-auto-id="searchBoxForm"] input[data-auto-id-test="searchBox"]`); }); - test('getSelector, the selector is [class="searchBoxForm"] input', () => { - expect(query.getSelector(`[class="searchBoxForm"] input`)).toEqual(`[class="searchBoxForm"] input`); + test('If selector is a native css, it will not change"]', () => { + expect(query.getSelector(`[class="searchBoxForm"] input[class="searchBox"]`)).toEqual(`[class="searchBoxForm"] input[class="searchBox"]`); }); - test('getSelector, the selector is @b_searchboxForm:1 input', () => { - expect(query.getSelector(`@b_searchboxForm:1`)).toEqual(`[class="b_searchboxForm"]:nth-child(1)`); + test('The selector is @b_searchboxForm:1 then return [data-auto-id="b_searchboxForm"]:nth-child(1)', () => { + expect(query.getSelector(`@b_searchboxForm:1`)).toEqual(`[data-auto-id="b_searchboxForm"]:nth-child(1)`); }); - test('getSelector, the selector is @b_searchboxForm:-1 input', () => { - expect(query.getSelector(`@b_searchboxForm:-1`)).toEqual(`[class="b_searchboxForm"]:nth-last-child(1)`); + test('The selector is @b_searchboxForm:-1 then return [data-auto-id="b_searchboxForm"]:nth-last-child(1)', () => { + expect(query.getSelector(`@b_searchboxForm:-1`)).toEqual(`[data-auto-id="b_searchboxForm"]:nth-last-child(1)`); }); + + //TODO: unsupported selector + test('The selector is div@b_searchboxForm then return [div[data-auto-id="b_searchboxForm"]', () => { + expect(query.getSelector(`div@b_searchboxForm`)).not.toEqual(`div[data-auto-id="b_searchboxForm"]`); + }); + + test('The selector is div@b_searchboxForm then return [div[data-auto-id="b_searchboxForm"]', () => { + expect(query.getSelector(`@b_searchboxForm div@b_searchbox`)).not.toEqual(`[data-auto-id="b_searchboxForm"] div[data-auto-id="b_searchbox"]`); + }); + }); + +describe('base/index unit test for getSelector', () => { + let query; + beforeAll(() => { + query = new Query('', {}); + }) + + test('If selector is a native css, it will not change', () => { + [`[class="searchBox"]`, `[class*="searchBox"] [class="searchBoxForm"]`].forEach((selector) => { + expect(query.getSelector(selector)).toEqual(selector); + }) + }); + +});