@fluentui-react-native/tester 0.129.6 → 0.129.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/CHANGELOG.json +280 -1
  2. package/CHANGELOG.md +57 -2
  3. package/lib/E2E/src/FocusZone/consts.d.ts +3 -2
  4. package/lib/E2E/src/FocusZone/consts.d.ts.map +1 -1
  5. package/lib/E2E/src/FocusZone/consts.js.map +1 -1
  6. package/lib/E2E/src/FocusZone/pages/FocusZonePageObject.d.ts +28 -0
  7. package/lib/E2E/src/FocusZone/pages/FocusZonePageObject.d.ts.map +1 -0
  8. package/lib/E2E/src/FocusZone/pages/FocusZonePageObject.js +189 -0
  9. package/lib/E2E/src/FocusZone/pages/FocusZonePageObject.js.map +1 -0
  10. package/lib/E2E/src/TabsV1/consts.d.ts +7 -2
  11. package/lib/E2E/src/TabsV1/consts.d.ts.map +1 -1
  12. package/lib/E2E/src/TabsV1/consts.js +7 -2
  13. package/lib/E2E/src/TabsV1/consts.js.map +1 -1
  14. package/lib/E2E/src/common/BasePage.d.ts +67 -0
  15. package/lib/E2E/src/common/BasePage.d.ts.map +1 -0
  16. package/lib/E2E/src/common/BasePage.js +654 -0
  17. package/lib/E2E/src/common/BasePage.js.map +1 -0
  18. package/lib/E2E/src/common/consts.d.ts.map +1 -1
  19. package/lib/E2E/src/common/consts.js.map +1 -1
  20. package/lib/fluent-tester/src/TestComponents/Button/ButtonSizeTestSection.d.ts.map +1 -1
  21. package/lib/fluent-tester/src/TestComponents/Button/ButtonSizeTestSection.js +2 -1
  22. package/lib/fluent-tester/src/TestComponents/Button/ButtonSizeTestSection.js.map +1 -1
  23. package/lib/fluent-tester/src/TestComponents/Button/ButtonTest.d.ts.map +1 -1
  24. package/lib/fluent-tester/src/TestComponents/Button/ButtonTest.js +4 -2
  25. package/lib/fluent-tester/src/TestComponents/Button/ButtonTest.js.map +1 -1
  26. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.android.d.ts +1 -2
  27. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.android.d.ts.map +1 -1
  28. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.android.js +1 -22
  29. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.android.js.map +1 -1
  30. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.ios.d.ts +2 -0
  31. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.ios.d.ts.map +1 -0
  32. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.ios.js +2 -0
  33. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.ios.js.map +1 -0
  34. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.mobile.d.ts +3 -0
  35. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.mobile.d.ts.map +1 -0
  36. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.mobile.js +23 -0
  37. package/lib/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.mobile.js.map +1 -0
  38. package/lib/fluent-tester/src/TestComponents/FocusZone/FocusZoneE2ETest.d.ts +1 -1
  39. package/lib/fluent-tester/src/TestComponents/FocusZone/FocusZoneE2ETest.d.ts.map +1 -1
  40. package/lib/fluent-tester/src/TestComponents/FocusZone/FocusZoneE2ETest.js +5 -5
  41. package/lib/fluent-tester/src/TestComponents/FocusZone/FocusZoneE2ETest.js.map +1 -1
  42. package/lib/fluent-tester/src/TestComponents/TabsV1/TabsV1E2ETest.d.ts.map +1 -1
  43. package/lib/fluent-tester/src/TestComponents/TabsV1/TabsV1E2ETest.js +7 -7
  44. package/lib/fluent-tester/src/TestComponents/TabsV1/TabsV1E2ETest.js.map +1 -1
  45. package/lib-commonjs/E2E/src/FocusZone/consts.d.ts +3 -2
  46. package/lib-commonjs/E2E/src/FocusZone/consts.d.ts.map +1 -1
  47. package/lib-commonjs/E2E/src/FocusZone/consts.js.map +1 -1
  48. package/lib-commonjs/E2E/src/FocusZone/pages/FocusZonePageObject.d.ts +28 -0
  49. package/lib-commonjs/E2E/src/FocusZone/pages/FocusZonePageObject.d.ts.map +1 -0
  50. package/lib-commonjs/E2E/src/FocusZone/pages/FocusZonePageObject.js +191 -0
  51. package/lib-commonjs/E2E/src/FocusZone/pages/FocusZonePageObject.js.map +1 -0
  52. package/lib-commonjs/E2E/src/TabsV1/consts.d.ts +7 -2
  53. package/lib-commonjs/E2E/src/TabsV1/consts.d.ts.map +1 -1
  54. package/lib-commonjs/E2E/src/TabsV1/consts.js +8 -3
  55. package/lib-commonjs/E2E/src/TabsV1/consts.js.map +1 -1
  56. package/lib-commonjs/E2E/src/common/BasePage.d.ts +67 -0
  57. package/lib-commonjs/E2E/src/common/BasePage.d.ts.map +1 -0
  58. package/lib-commonjs/E2E/src/common/BasePage.js +658 -0
  59. package/lib-commonjs/E2E/src/common/BasePage.js.map +1 -0
  60. package/lib-commonjs/E2E/src/common/consts.d.ts.map +1 -1
  61. package/lib-commonjs/E2E/src/common/consts.js.map +1 -1
  62. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonSizeTestSection.d.ts.map +1 -1
  63. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonSizeTestSection.js +2 -1
  64. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonSizeTestSection.js.map +1 -1
  65. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonTest.d.ts.map +1 -1
  66. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonTest.js +4 -2
  67. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonTest.js.map +1 -1
  68. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.android.d.ts +1 -2
  69. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.android.d.ts.map +1 -1
  70. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.android.js +2 -24
  71. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.android.js.map +1 -1
  72. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.ios.d.ts +2 -0
  73. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.ios.d.ts.map +1 -0
  74. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.ios.js +6 -0
  75. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.ios.js.map +1 -0
  76. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.mobile.d.ts +3 -0
  77. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.mobile.d.ts.map +1 -0
  78. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.mobile.js +28 -0
  79. package/lib-commonjs/fluent-tester/src/TestComponents/Button/ButtonVariantTestSection.mobile.js.map +1 -0
  80. package/lib-commonjs/fluent-tester/src/TestComponents/FocusZone/FocusZoneE2ETest.d.ts +1 -1
  81. package/lib-commonjs/fluent-tester/src/TestComponents/FocusZone/FocusZoneE2ETest.d.ts.map +1 -1
  82. package/lib-commonjs/fluent-tester/src/TestComponents/FocusZone/FocusZoneE2ETest.js +14 -14
  83. package/lib-commonjs/fluent-tester/src/TestComponents/FocusZone/FocusZoneE2ETest.js.map +1 -1
  84. package/lib-commonjs/fluent-tester/src/TestComponents/TabsV1/TabsV1E2ETest.d.ts.map +1 -1
  85. package/lib-commonjs/fluent-tester/src/TestComponents/TabsV1/TabsV1E2ETest.js +6 -6
  86. package/lib-commonjs/fluent-tester/src/TestComponents/TabsV1/TabsV1E2ETest.js.map +1 -1
  87. package/package.json +33 -33
  88. package/src/TestComponents/Button/ButtonSizeTestSection.tsx +3 -1
  89. package/src/TestComponents/Button/ButtonTest.tsx +4 -2
  90. package/src/TestComponents/Button/ButtonVariantTestSection.android.tsx +1 -45
  91. package/src/TestComponents/Button/ButtonVariantTestSection.ios.tsx +1 -0
  92. package/src/TestComponents/Button/ButtonVariantTestSection.mobile.tsx +45 -0
  93. package/src/TestComponents/FocusZone/FocusZoneE2ETest.tsx +15 -14
  94. package/src/TestComponents/TabsV1/TabsV1E2ETest.tsx +14 -9
  95. package/tsconfig.json +2 -1
@@ -7,8 +7,13 @@ export var TABSV1_ACCESSIBILITY_LABEL = 'E2E testing TabsV1 accessibility label'
7
7
  export var TABSV1_NO_A11Y_LABEL_COMPONENT = 'TabsV1_No_A11y_label_Component';
8
8
  export var TABSV1_TEST_COMPONENT_LABEL = 'Test TabsV1 2 - No Accessibility Label'; // A component on each specific test page
9
9
  /* E2E Testing TabsItemV1 1 */
10
- export var TABSITEMV1_TEST_COMPONENT = 'TabItemV1_Test_Component'; // A component on each specific test page
11
- export var TABSITEMV1_ACCESSIBILITY_LABEL = 'E2E testing TabItemV1 accessibility label';
10
+ export var TABSITEMV1_ITEM_1_ACCESSIBILITY_LABEL = 'E2E testing TabItemV1 accessibility label';
11
+ export var TABSITEMV1_ITEM_1 = 'TabItemV1_Item_1'; // A component on each specific test page
12
+ export var TABSITEMV1_ITEM_2 = 'TabItemV1_Item_2';
13
+ export var TABSITEMV1_ITEM_3 = 'TabItemV1_Item_3';
14
+ export var TABSITEMV1_CONTENT_1 = 'TabsItemV1_Content_1';
15
+ export var TABSITEMV1_CONTENT_2 = 'TabsItemV1_Content_2';
16
+ export var TABSITEMV1_CONTENT_3 = 'TabsItemV1_Content_3';
12
17
  /* E2E Testing TabsItemV1 2 */
13
18
  export var TABSITEMV1_NO_A11Y_LABEL_COMPONENT = 'TabItemV1_No_A11y_label_Component';
14
19
  export var TABSITEMV1_TEST_COMPONENT_LABEL = 'Test TabItemV1 2 - No Accessibility Label'; // A component on each specific test page
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../../../E2E/src/TabsV1/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAC/D,MAAM,CAAC,IAAM,eAAe,GAAG,iBAAiB,CAAC;AAEjD,0BAA0B;AAC1B,MAAM,CAAC,IAAM,qBAAqB,GAAG,uBAAuB,CAAC,CAAC,yCAAyC;AACvG,MAAM,CAAC,IAAM,0BAA0B,GAAG,wCAAwC,CAAC;AAEnF,0BAA0B;AAC1B,MAAM,CAAC,IAAM,8BAA8B,GAAG,gCAAgC,CAAC;AAC/E,MAAM,CAAC,IAAM,2BAA2B,GAAG,wCAAwC,CAAC,CAAC,yCAAyC;AAE9H,8BAA8B;AAC9B,MAAM,CAAC,IAAM,yBAAyB,GAAG,0BAA0B,CAAC,CAAC,yCAAyC;AAC9G,MAAM,CAAC,IAAM,8BAA8B,GAAG,2CAA2C,CAAC;AAE1F,8BAA8B;AAC9B,MAAM,CAAC,IAAM,kCAAkC,GAAG,mCAAmC,CAAC;AACtF,MAAM,CAAC,IAAM,+BAA+B,GAAG,2CAA2C,CAAC,CAAC,yCAAyC"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../../../E2E/src/TabsV1/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAC/D,MAAM,CAAC,IAAM,eAAe,GAAG,iBAAiB,CAAC;AAEjD,0BAA0B;AAC1B,MAAM,CAAC,IAAM,qBAAqB,GAAG,uBAAuB,CAAC,CAAC,yCAAyC;AACvG,MAAM,CAAC,IAAM,0BAA0B,GAAG,wCAAwC,CAAC;AAEnF,0BAA0B;AAC1B,MAAM,CAAC,IAAM,8BAA8B,GAAG,gCAAgC,CAAC;AAC/E,MAAM,CAAC,IAAM,2BAA2B,GAAG,wCAAwC,CAAC,CAAC,yCAAyC;AAE9H,8BAA8B;AAC9B,MAAM,CAAC,IAAM,qCAAqC,GAAG,2CAA2C,CAAC;AAEjG,MAAM,CAAC,IAAM,iBAAiB,GAAG,kBAAkB,CAAC,CAAC,yCAAyC;AAC9F,MAAM,CAAC,IAAM,iBAAiB,GAAG,kBAAkB,CAAC;AACpD,MAAM,CAAC,IAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAEpD,MAAM,CAAC,IAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAC3D,MAAM,CAAC,IAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAC3D,MAAM,CAAC,IAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D,8BAA8B;AAC9B,MAAM,CAAC,IAAM,kCAAkC,GAAG,mCAAmC,CAAC;AACtF,MAAM,CAAC,IAAM,+BAA+B,GAAG,2CAA2C,CAAC,CAAC,yCAAyC"}
@@ -0,0 +1,67 @@
1
+ /// <reference types="webdriverio/async" />
2
+ import type { AndroidAttribute } from './consts';
3
+ import { Keys } from './consts';
4
+ import { Attribute } from './consts';
5
+ export declare const COMPONENT_SCROLL_COORDINATES: {
6
+ x: number;
7
+ y: number;
8
+ };
9
+ export declare function By(identifier: string): Promise<WebdriverIO.Element>;
10
+ type ComponentSelector = 'Primary' | 'Secondary';
11
+ type MobilePlatform = 'android' | 'ios';
12
+ type DesktopPlatform = 'win32' | 'windows' | 'macos';
13
+ type Platform = MobilePlatform | DesktopPlatform;
14
+ /****************************** IMPORTANT! PLEASE READ! **************************************************
15
+ * Every component's page object extends this. We can assume each test page will interact with at least
16
+ * two UI elements, so we'll add integration for two UI elements in this file (See *Getters* section below).
17
+ * Every additional UI element that a test page wants to interact with should be handled in that respective
18
+ * component's page object.
19
+ *********************************************************************************************************/
20
+ export declare abstract class BasePage {
21
+ protected platform?: Platform;
22
+ constructor();
23
+ /******************************************************************/
24
+ /**************** UI Element Interaction Methods ******************/
25
+ /******************************************************************/
26
+ /**
27
+ * Checks to see if an element attribute is strictly equal to an expected value the user passes in.
28
+ * The advantage to this over testing using .isEqual in a spec is that this throws a detailed error if
29
+ * the expected and actual values don't match. This should be called for attribute tests in specs. */
30
+ compareAttribute(element: Promise<WebdriverIO.Element>, attribute: Attribute | AndroidAttribute, expectedValue: any): Promise<boolean>;
31
+ getAccessibilityRole(): Promise<string>;
32
+ getAccessibilityLabel(componentSelector: ComponentSelector): Promise<string>;
33
+ isPageLoaded(): Promise<boolean>;
34
+ isButtonInView(): Promise<boolean>;
35
+ clickComponent(): Promise<void>;
36
+ click(element: Promise<WebdriverIO.Element>): Promise<void>;
37
+ sendKeys(element: Promise<WebdriverIO.Element>, keys: Keys[]): Promise<void>;
38
+ getElementAttribute(element: WebdriverIO.Element, attribute: Attribute): Promise<string>;
39
+ mobileScrollToComponentButton(): Promise<void>;
40
+ waitForPageDisplayed(timeout?: number): Promise<void>;
41
+ waitForButtonDisplayed(timeout?: number): Promise<void>;
42
+ waitForPrimaryElementDisplayed(timeout?: number): Promise<void>;
43
+ scrollToTestElement(component?: WebdriverIO.Element): Promise<void>;
44
+ mobileScrollToTestElement(componentIdentifier?: string): Promise<void>;
45
+ waitForCondition(condition: () => Promise<boolean>, errorMsg?: string, timeout?: number, interval?: number): Promise<void>;
46
+ didAssertPopup(): Promise<boolean>;
47
+ /*****************************************/
48
+ /**************** Getters ****************/
49
+ /*****************************************/
50
+ get _testPage(): Promise<WebdriverIO.Element>;
51
+ get _primaryComponent(): Promise<WebdriverIO.Element>;
52
+ get _secondaryComponent(): Promise<WebdriverIO.Element>;
53
+ get _pageButton(): Promise<WebdriverIO.Element>;
54
+ abstract get _pageName(): string;
55
+ abstract get _pageButtonName(): string;
56
+ get _primaryComponentName(): string;
57
+ get _secondaryComponentName(): string;
58
+ get _testPageButtonScrollViewer(): Promise<WebdriverIO.Element>;
59
+ /****************** Error Messages ******************/
60
+ get ERRORMESSAGE_SUFFIX(): string;
61
+ get ERRORMESSAGE_APPLOAD(): string;
62
+ get ERRORMESSAGE_PAGELOAD(): string;
63
+ get ERRORMESSAGE_ASSERT(): string;
64
+ waitForUiEvent: number;
65
+ }
66
+ export {};
67
+ //# sourceMappingURL=BasePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasePage.d.ts","sourceRoot":"","sources":["../../../../../E2E/src/common/BasePage.ts"],"names":[],"mappings":"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"}