@fluidframework/test-utils 2.0.0-rc.2.0.2 → 2.0.0-rc.3.0.1

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 (147) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/api-report/test-utils.api.md +72 -51
  3. package/dist/DriverWrappers.d.ts +1 -1
  4. package/dist/DriverWrappers.d.ts.map +1 -1
  5. package/dist/DriverWrappers.js.map +1 -1
  6. package/dist/TestSummaryUtils.d.ts +5 -5
  7. package/dist/TestSummaryUtils.d.ts.map +1 -1
  8. package/dist/TestSummaryUtils.js +13 -13
  9. package/dist/TestSummaryUtils.js.map +1 -1
  10. package/dist/containerUtils.d.ts +2 -2
  11. package/dist/containerUtils.d.ts.map +1 -1
  12. package/dist/containerUtils.js +3 -3
  13. package/dist/containerUtils.js.map +1 -1
  14. package/dist/debug.d.ts.map +1 -1
  15. package/dist/debug.js.map +1 -1
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/interfaces.d.ts +3 -3
  20. package/dist/interfaces.d.ts.map +1 -1
  21. package/dist/interfaces.js.map +1 -1
  22. package/dist/legacy.d.ts +18 -0
  23. package/dist/loaderContainerTracker.d.ts +5 -1
  24. package/dist/loaderContainerTracker.d.ts.map +1 -1
  25. package/dist/loaderContainerTracker.js +15 -15
  26. package/dist/loaderContainerTracker.js.map +1 -1
  27. package/dist/localCodeLoader.d.ts +3 -3
  28. package/dist/localCodeLoader.d.ts.map +1 -1
  29. package/dist/localCodeLoader.js +4 -4
  30. package/dist/localCodeLoader.js.map +1 -1
  31. package/dist/localLoader.d.ts +3 -3
  32. package/dist/localLoader.d.ts.map +1 -1
  33. package/dist/localLoader.js +2 -2
  34. package/dist/localLoader.js.map +1 -1
  35. package/dist/packageVersion.d.ts +1 -1
  36. package/dist/packageVersion.js +1 -1
  37. package/dist/packageVersion.js.map +1 -1
  38. package/dist/public.d.ts +12 -0
  39. package/dist/retry.js +2 -2
  40. package/dist/retry.js.map +1 -1
  41. package/dist/testContainerRuntimeFactory.d.ts +5 -5
  42. package/dist/testContainerRuntimeFactory.d.ts.map +1 -1
  43. package/dist/testContainerRuntimeFactory.js +16 -14
  44. package/dist/testContainerRuntimeFactory.js.map +1 -1
  45. package/dist/testContainerRuntimeFactoryWithDefaultDataStore.d.ts +5 -5
  46. package/dist/testContainerRuntimeFactoryWithDefaultDataStore.d.ts.map +1 -1
  47. package/dist/testContainerRuntimeFactoryWithDefaultDataStore.js +2 -2
  48. package/dist/testContainerRuntimeFactoryWithDefaultDataStore.js.map +1 -1
  49. package/dist/testFluidObject.d.ts +5 -5
  50. package/dist/testFluidObject.d.ts.map +1 -1
  51. package/dist/testFluidObject.js +10 -10
  52. package/dist/testFluidObject.js.map +1 -1
  53. package/dist/testObjectProvider.d.ts +47 -23
  54. package/dist/testObjectProvider.d.ts.map +1 -1
  55. package/dist/testObjectProvider.js +66 -46
  56. package/dist/testObjectProvider.js.map +1 -1
  57. package/dist/timeoutUtils.js +4 -4
  58. package/dist/timeoutUtils.js.map +1 -1
  59. package/internal.d.ts +11 -0
  60. package/legacy.d.ts +11 -0
  61. package/lib/DriverWrappers.d.ts +1 -1
  62. package/lib/DriverWrappers.d.ts.map +1 -1
  63. package/lib/DriverWrappers.js.map +1 -1
  64. package/lib/TestSummaryUtils.d.ts +5 -5
  65. package/lib/TestSummaryUtils.d.ts.map +1 -1
  66. package/lib/TestSummaryUtils.js +5 -5
  67. package/lib/TestSummaryUtils.js.map +1 -1
  68. package/lib/containerUtils.d.ts +2 -2
  69. package/lib/containerUtils.d.ts.map +1 -1
  70. package/lib/containerUtils.js +1 -1
  71. package/lib/containerUtils.js.map +1 -1
  72. package/lib/debug.d.ts.map +1 -1
  73. package/lib/debug.js.map +1 -1
  74. package/lib/index.d.ts +1 -1
  75. package/lib/index.d.ts.map +1 -1
  76. package/lib/index.js.map +1 -1
  77. package/lib/interfaces.d.ts +3 -3
  78. package/lib/interfaces.d.ts.map +1 -1
  79. package/lib/interfaces.js.map +1 -1
  80. package/lib/legacy.d.ts +18 -0
  81. package/lib/loaderContainerTracker.d.ts +5 -1
  82. package/lib/loaderContainerTracker.d.ts.map +1 -1
  83. package/lib/loaderContainerTracker.js +2 -2
  84. package/lib/loaderContainerTracker.js.map +1 -1
  85. package/lib/localCodeLoader.d.ts +3 -3
  86. package/lib/localCodeLoader.d.ts.map +1 -1
  87. package/lib/localCodeLoader.js +2 -2
  88. package/lib/localCodeLoader.js.map +1 -1
  89. package/lib/localLoader.d.ts +3 -3
  90. package/lib/localLoader.d.ts.map +1 -1
  91. package/lib/localLoader.js +1 -1
  92. package/lib/localLoader.js.map +1 -1
  93. package/lib/packageVersion.d.ts +1 -1
  94. package/lib/packageVersion.js +1 -1
  95. package/lib/packageVersion.js.map +1 -1
  96. package/lib/public.d.ts +12 -0
  97. package/lib/retry.js +1 -1
  98. package/lib/retry.js.map +1 -1
  99. package/lib/testContainerRuntimeFactory.d.ts +5 -5
  100. package/lib/testContainerRuntimeFactory.d.ts.map +1 -1
  101. package/lib/testContainerRuntimeFactory.js +10 -6
  102. package/lib/testContainerRuntimeFactory.js.map +1 -1
  103. package/lib/testContainerRuntimeFactoryWithDefaultDataStore.d.ts +5 -5
  104. package/lib/testContainerRuntimeFactoryWithDefaultDataStore.d.ts.map +1 -1
  105. package/lib/testContainerRuntimeFactoryWithDefaultDataStore.js +1 -1
  106. package/lib/testContainerRuntimeFactoryWithDefaultDataStore.js.map +1 -1
  107. package/lib/testFluidObject.d.ts +5 -5
  108. package/lib/testFluidObject.d.ts.map +1 -1
  109. package/lib/testFluidObject.js +4 -4
  110. package/lib/testFluidObject.js.map +1 -1
  111. package/lib/testObjectProvider.d.ts +47 -23
  112. package/lib/testObjectProvider.d.ts.map +1 -1
  113. package/lib/testObjectProvider.js +61 -41
  114. package/lib/testObjectProvider.js.map +1 -1
  115. package/lib/timeoutUtils.js +1 -1
  116. package/lib/timeoutUtils.js.map +1 -1
  117. package/package.json +46 -64
  118. package/src/DriverWrappers.ts +1 -1
  119. package/src/TestSummaryUtils.ts +16 -11
  120. package/src/containerUtils.ts +5 -4
  121. package/src/debug.ts +1 -0
  122. package/src/index.ts +1 -0
  123. package/src/interfaces.ts +4 -4
  124. package/src/loaderContainerTracker.ts +11 -8
  125. package/src/localCodeLoader.ts +10 -9
  126. package/src/localLoader.ts +7 -6
  127. package/src/packageVersion.ts +1 -1
  128. package/src/retry.ts +1 -1
  129. package/src/testContainerRuntimeFactory.ts +15 -10
  130. package/src/testContainerRuntimeFactoryWithDefaultDataStore.ts +5 -5
  131. package/src/testFluidObject.ts +10 -9
  132. package/src/testObjectProvider.ts +136 -75
  133. package/src/timeoutUtils.ts +1 -1
  134. package/api-extractor-cjs.json +0 -8
  135. package/dist/test-utils-alpha.d.ts +0 -309
  136. package/dist/test-utils-beta.d.ts +0 -208
  137. package/dist/test-utils-public.d.ts +0 -208
  138. package/dist/test-utils-untrimmed.d.ts +0 -1046
  139. package/lib/test/timeoutUtils.spec.js +0 -165
  140. package/lib/test/timeoutUtils.spec.js.map +0 -1
  141. package/lib/test/types/validateTestUtilsPrevious.generated.js +0 -90
  142. package/lib/test/types/validateTestUtilsPrevious.generated.js.map +0 -1
  143. package/lib/test-utils-alpha.d.ts +0 -309
  144. package/lib/test-utils-beta.d.ts +0 -208
  145. package/lib/test-utils-public.d.ts +0 -208
  146. package/lib/test-utils-untrimmed.d.ts +0 -1046
  147. /package/{dist → lib}/tsdoc-metadata.json +0 -0
@@ -3,37 +3,40 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ import { assert } from "@fluidframework/core-utils/internal";
7
+ import { ITestDriver, TestDriverTypes } from "@fluid-internal/test-driver-definitions";
6
8
  import {
7
9
  IContainer,
8
- IHostLoader,
9
10
  IFluidCodeDetails,
11
+ IHostLoader,
10
12
  ILoader,
11
- } from "@fluidframework/container-definitions";
13
+ } from "@fluidframework/container-definitions/internal";
12
14
  import {
13
15
  ILoaderProps,
14
16
  Loader,
15
17
  waitContainerToCatchUp as waitContainerToCatchUp_original,
16
- } from "@fluidframework/container-loader";
17
- import { IContainerRuntimeOptions } from "@fluidframework/container-runtime";
18
+ } from "@fluidframework/container-loader/internal";
19
+ import { IContainerRuntimeOptions } from "@fluidframework/container-runtime/internal";
18
20
  import {
19
- ITelemetryBaseLogger,
20
- ITelemetryBaseEvent,
21
21
  IRequestHeader,
22
+ ITelemetryBaseEvent,
23
+ ITelemetryBaseLogger,
22
24
  } from "@fluidframework/core-interfaces";
23
25
  import {
24
26
  IDocumentServiceFactory,
25
27
  IResolvedUrl,
26
28
  IUrlResolver,
27
- } from "@fluidframework/driver-definitions";
28
- import { ITestDriver, TestDriverTypes } from "@fluidframework/test-driver-definitions";
29
- import { v4 as uuid } from "uuid";
29
+ } from "@fluidframework/driver-definitions/internal";
30
+ import { type ITelemetryGenericEventExt } from "@fluidframework/telemetry-utils";
30
31
  import {
31
32
  createChildLogger,
32
33
  createMultiSinkLogger,
33
- type ITelemetryGenericEventExt,
34
- } from "@fluidframework/telemetry-utils";
34
+ type ITelemetryLoggerPropertyBags,
35
+ } from "@fluidframework/telemetry-utils/internal";
36
+ import { v4 as uuid } from "uuid";
37
+
35
38
  import { LoaderContainerTracker } from "./loaderContainerTracker.js";
36
- import { fluidEntryPoint, LocalCodeLoader } from "./localCodeLoader.js";
39
+ import { LocalCodeLoader, fluidEntryPoint } from "./localCodeLoader.js";
37
40
  import { createAndAttachContainer } from "./localLoader.js";
38
41
  import { ChannelFactoryRegistry } from "./testFluidObject.js";
39
42
 
@@ -79,7 +82,12 @@ export interface ITestObjectProvider {
79
82
  /**
80
83
  * Logger used to track expected and unexpected events.
81
84
  */
82
- logger: EventAndErrorTrackingLogger | undefined;
85
+ logger: ITelemetryBaseLogger;
86
+
87
+ /**
88
+ * Logger used to track expected and unexpected events.
89
+ */
90
+ tracker: IEventAndErrorTrackingLogger;
83
91
 
84
92
  /**
85
93
  * Used to create a url for the created container with any data store path given in the relative url.
@@ -108,10 +116,13 @@ export interface ITestObjectProvider {
108
116
  * containerRuntime/dataRuntime used in fluidEntryPoint will be used as is from what is passed in.
109
117
  *
110
118
  * @param packageEntries - list of code details and fluidEntryPoint pairs.
119
+ * @param loaderProps - Optional loader properties
120
+ * @param forceUseCreateVersion - For Cross-Version compat testing, create a loader based on the create version
111
121
  */
112
122
  createLoader(
113
123
  packageEntries: Iterable<[IFluidCodeDetails, fluidEntryPoint]>,
114
124
  loaderProps?: Partial<ILoaderProps>,
125
+ forceUseCreateVersion?: boolean,
115
126
  ): IHostLoader;
116
127
 
117
128
  /**
@@ -174,6 +185,7 @@ export interface ITestObjectProvider {
174
185
  loadTestContainer(
175
186
  testContainerConfig?: ITestContainerConfig,
176
187
  requestHeader?: IRequestHeader,
188
+ pendingLocalState?: string,
177
189
  ): Promise<IContainer>;
178
190
 
179
191
  /**
@@ -221,6 +233,9 @@ export interface ITestContainerConfig {
221
233
  /** Whether this runtime should be instantiated using a mixed-in attributor class */
222
234
  enableAttribution?: boolean;
223
235
 
236
+ /** For Cross-Version compat testing, load using the create version (e.g. use this to get a Summarizer on the create version) */
237
+ forceUseCreateVersion?: true;
238
+
224
239
  /** Loader options for the loader used to create containers */
225
240
  loaderProps?: Partial<ILoaderProps>;
226
241
  }
@@ -279,6 +294,15 @@ function getDocumentIdStrategy(type?: TestDriverTypes): IDocumentIdStrategy {
279
294
  }
280
295
  }
281
296
 
297
+ /** @internal */
298
+ export interface IEventAndErrorTrackingLogger {
299
+ registerExpectedEvent: (...orderedExpectedEvents: ITelemetryGenericEventExt[]) => void;
300
+ reportAndClearTrackedEvents: () => {
301
+ expectedNotFound: { index: number; event: ITelemetryGenericEventExt }[];
302
+ unexpectedErrors: ITelemetryBaseEvent[];
303
+ };
304
+ }
305
+
282
306
  /**
283
307
  * This class tracks events. It allows specifying expected events, which will be looked for in order.
284
308
  * It also tracks all unexpected errors.
@@ -286,7 +310,9 @@ function getDocumentIdStrategy(type?: TestDriverTypes): IDocumentIdStrategy {
286
310
  * any expected events that have not occurred.
287
311
  * @internal
288
312
  */
289
- export class EventAndErrorTrackingLogger implements ITelemetryBaseLogger {
313
+ export class EventAndErrorTrackingLogger
314
+ implements ITelemetryBaseLogger, IEventAndErrorTrackingLogger
315
+ {
290
316
  /**
291
317
  * Even if these error events are logged, tests should still be allowed to pass
292
318
  * Additionally, if downgrade is true, then log as generic (e.g. to avoid polluting the e2e test logs)
@@ -301,12 +327,9 @@ export class EventAndErrorTrackingLogger implements ITelemetryBaseLogger {
301
327
  { eventName: "fluid:telemetry:OpPerf:OpRoundtripTime" },
302
328
  ];
303
329
 
304
- constructor(private readonly baseLogger: ITelemetryBaseLogger) {}
330
+ constructor(private readonly baseLogger?: ITelemetryBaseLogger) {}
305
331
 
306
- private readonly expectedEvents: (
307
- | { index: number; event: ITelemetryGenericEventExt | undefined }
308
- | undefined
309
- )[] = [];
332
+ private readonly expectedEvents: { index: number; event: ITelemetryGenericEventExt }[] = [];
310
333
  private readonly unexpectedErrors: ITelemetryBaseEvent[] = [];
311
334
 
312
335
  public registerExpectedEvent(...orderedExpectedEvents: ITelemetryGenericEventExt[]) {
@@ -324,24 +347,26 @@ export class EventAndErrorTrackingLogger implements ITelemetryBaseLogger {
324
347
  }
325
348
 
326
349
  send(event: ITelemetryBaseEvent): void {
327
- const ee = this.expectedEvents[0]?.event;
328
- if (ee?.eventName === event.eventName) {
329
- let matches = true;
330
- for (const key of Object.keys(ee)) {
331
- if (ee[key] !== event[key]) {
332
- matches = false;
333
- break;
350
+ if (this.expectedEvents.length > 0) {
351
+ const ee = this.expectedEvents[0].event;
352
+ if (ee.eventName === event.eventName) {
353
+ let matches = true;
354
+ for (const key of Object.keys(ee)) {
355
+ if (ee[key] !== event[key]) {
356
+ matches = false;
357
+ break;
358
+ }
334
359
  }
335
- }
336
- if (matches) {
337
- // we found an expected event
338
- // so remove it from the list of expected events
339
- // and if it is an error, change it to generic
340
- // this helps keep our telemetry clear of
341
- // expected errors.
342
- this.expectedEvents.shift();
343
- if (event.category === "error") {
344
- event.category = "generic";
360
+ if (matches) {
361
+ // we found an expected event
362
+ // so remove it from the list of expected events
363
+ // and if it is an error, change it to generic
364
+ // this helps keep our telemetry clear of
365
+ // expected errors.
366
+ this.expectedEvents.shift();
367
+ if (event.category === "error") {
368
+ event.category = "generic";
369
+ }
345
370
  }
346
371
  }
347
372
  }
@@ -358,7 +383,7 @@ export class EventAndErrorTrackingLogger implements ITelemetryBaseLogger {
358
383
  }
359
384
  }
360
385
 
361
- this.baseLogger.send(event);
386
+ this.baseLogger?.send(event);
362
387
  }
363
388
 
364
389
  public reportAndClearTrackedEvents() {
@@ -383,7 +408,8 @@ export class TestObjectProvider implements ITestObjectProvider {
383
408
  private _loaderContainerTracker = new LoaderContainerTracker();
384
409
  private _documentServiceFactory: IDocumentServiceFactory | undefined;
385
410
  private _urlResolver: IUrlResolver | undefined;
386
- private _logger: EventAndErrorTrackingLogger | undefined;
411
+ private _logger: ITelemetryBaseLogger | undefined;
412
+ private _tracker: EventAndErrorTrackingLogger | undefined;
387
413
  private readonly _documentIdStrategy: IDocumentIdStrategy;
388
414
  // Since documentId doesn't change we can only create/make one container. Call the load functions instead.
389
415
  private _documentCreated = false;
@@ -412,27 +438,29 @@ export class TestObjectProvider implements ITestObjectProvider {
412
438
  /**
413
439
  * {@inheritDoc ITestObjectProvider.logger}
414
440
  */
415
- public get logger(): EventAndErrorTrackingLogger {
441
+ public get logger(): ITelemetryBaseLogger {
416
442
  if (this._logger === undefined) {
417
- this._logger = new EventAndErrorTrackingLogger(
418
- createChildLogger({
419
- logger: getTestLogger?.(),
420
- properties: {
421
- all: {
422
- driverType: this.driver.type,
423
- driverEndpointName: this.driver.endpointName,
424
- driverTenantName: this.driver.tenantName,
425
- driverUserIndex: this.driver.userIndex,
426
- },
443
+ this._tracker = new EventAndErrorTrackingLogger(getTestLogger?.());
444
+ this._logger = createChildLogger({
445
+ logger: this._tracker,
446
+ properties: {
447
+ all: {
448
+ testType: this.type,
449
+ driverType: this.driver.type,
450
+ driverEndpointName: this.driver.endpointName,
451
+ driverTenantName: this.driver.tenantName,
452
+ driverUserIndex: this.driver.userIndex,
427
453
  },
428
- }),
429
- );
454
+ },
455
+ });
430
456
  }
431
457
  return this._logger;
432
458
  }
433
459
 
434
- private set logger(logger: EventAndErrorTrackingLogger) {
435
- this._logger = logger;
460
+ public get tracker() {
461
+ void this.logger;
462
+ assert(this._tracker !== undefined, "should be initialized");
463
+ return this._tracker;
436
464
  }
437
465
 
438
466
  /**
@@ -563,11 +591,18 @@ export class TestObjectProvider implements ITestObjectProvider {
563
591
  return this.resolveContainer(loader, requestHeader);
564
592
  }
565
593
 
566
- private async resolveContainer(loader: ILoader, headers?: IRequestHeader) {
567
- return loader.resolve({
568
- url: await this.driver.createContainerUrl(this.documentId),
569
- headers,
570
- });
594
+ private async resolveContainer(
595
+ loader: ILoader,
596
+ headers?: IRequestHeader,
597
+ pendingLocalState?: string,
598
+ ) {
599
+ return loader.resolve(
600
+ {
601
+ url: await this.driver.createContainerUrl(this.documentId),
602
+ headers,
603
+ },
604
+ pendingLocalState,
605
+ );
571
606
  }
572
607
 
573
608
  /**
@@ -610,10 +645,11 @@ export class TestObjectProvider implements ITestObjectProvider {
610
645
  public async loadTestContainer(
611
646
  testContainerConfig?: ITestContainerConfig,
612
647
  requestHeader?: IRequestHeader,
648
+ pendingLocalState?: string,
613
649
  ): Promise<IContainer> {
614
650
  const loader = this.makeTestLoader(testContainerConfig);
615
651
 
616
- const container = await this.resolveContainer(loader, requestHeader);
652
+ const container = await this.resolveContainer(loader, requestHeader, pendingLocalState);
617
653
  await this.waitContainerToCatchUp(container);
618
654
 
619
655
  return container;
@@ -627,11 +663,12 @@ export class TestObjectProvider implements ITestObjectProvider {
627
663
  this._documentServiceFactory = undefined;
628
664
  this._urlResolver = undefined;
629
665
  this._documentIdStrategy.reset();
630
- const logError = getUnexpectedLogErrorException(this._logger);
666
+ const logError = getUnexpectedLogErrorException(this._tracker);
631
667
  if (logError) {
632
668
  throw logError;
633
669
  }
634
670
  this._logger = undefined;
671
+ this._tracker = undefined;
635
672
  this._documentCreated = false;
636
673
  }
637
674
 
@@ -681,7 +718,8 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
681
718
  */
682
719
  public readonly type = "TestObjectProviderWithVersionedLoad";
683
720
  private _loaderContainerTracker = new LoaderContainerTracker();
684
- private _logger: EventAndErrorTrackingLogger | undefined;
721
+ private _logger: ITelemetryBaseLogger | undefined;
722
+ private _tracker: EventAndErrorTrackingLogger | undefined;
685
723
  private readonly _documentIdStrategy: IDocumentIdStrategy;
686
724
  private _documentServiceFactory: IDocumentServiceFactory | undefined;
687
725
  private _urlResolver: IUrlResolver | undefined;
@@ -707,6 +745,7 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
707
745
  private readonly createFluidEntryPointForLoading: (
708
746
  testContainerConfig?: ITestContainerConfig,
709
747
  ) => fluidEntryPoint,
748
+ private readonly telemetryProps?: ITelemetryLoggerPropertyBags,
710
749
  ) {
711
750
  this._documentIdStrategy = getDocumentIdStrategy(driverForCreating.type);
712
751
  }
@@ -714,17 +753,23 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
714
753
  /**
715
754
  * {@inheritDoc ITestObjectProvider.logger}
716
755
  */
717
- public get logger(): EventAndErrorTrackingLogger {
756
+ public get logger() {
718
757
  if (this._logger === undefined) {
719
- this._logger = new EventAndErrorTrackingLogger(
720
- createChildLogger({
721
- logger: getTestLogger?.(),
722
- }),
723
- );
758
+ this._tracker = new EventAndErrorTrackingLogger(getTestLogger?.());
759
+ this._logger = createChildLogger({
760
+ logger: this._tracker,
761
+ properties: this.telemetryProps,
762
+ });
724
763
  }
725
764
  return this._logger;
726
765
  }
727
766
 
767
+ public get tracker() {
768
+ void this.logger;
769
+ assert(this._tracker !== undefined, "should be initialized");
770
+ return this._tracker;
771
+ }
772
+
728
773
  /**
729
774
  * {@inheritDoc ITestObjectProvider.documentServiceFactory}
730
775
  */
@@ -832,10 +877,14 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
832
877
  public createLoader(
833
878
  packageEntries: Iterable<[IFluidCodeDetails, fluidEntryPoint]>,
834
879
  loaderProps?: Partial<ILoaderProps>,
880
+ forceUseCreateVersion = false,
835
881
  ) {
882
+ const useCreateVersion = forceUseCreateVersion === true || this.useCreateApi;
836
883
  if (this.useCreateApi) {
837
884
  // After we create the first loader, we can set this.useCreateApi to false.
838
885
  this.useCreateApi = false;
886
+ }
887
+ if (useCreateVersion) {
839
888
  return this.createLoaderForCreating(packageEntries, loaderProps);
840
889
  }
841
890
  return this.createLoaderForLoading(packageEntries, loaderProps);
@@ -910,12 +959,16 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
910
959
  loader: ILoader,
911
960
  headers?: IRequestHeader,
912
961
  driver?: ITestDriver,
962
+ pendingLocalState?: string,
913
963
  ) {
914
- return loader.resolve({
915
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
916
- url: await driver!.createContainerUrl(this.documentId),
917
- headers,
918
- });
964
+ return loader.resolve(
965
+ {
966
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
967
+ url: await driver!.createContainerUrl(this.documentId),
968
+ headers,
969
+ },
970
+ pendingLocalState,
971
+ );
919
972
  }
920
973
 
921
974
  /**
@@ -925,6 +978,7 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
925
978
  return this.createLoader(
926
979
  [[defaultCodeDetails, this.createFluidEntryPoint(testContainerConfig)]],
927
980
  testContainerConfig?.loaderProps,
981
+ testContainerConfig?.forceUseCreateVersion,
928
982
  );
929
983
  }
930
984
 
@@ -961,11 +1015,17 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
961
1015
  public async loadTestContainer(
962
1016
  testContainerConfig?: ITestContainerConfig,
963
1017
  requestHeader?: IRequestHeader,
1018
+ pendingLocalState?: string,
964
1019
  ): Promise<IContainer> {
965
1020
  // Keep track of which Loader we are about to use so we can pass the correct driver through
966
1021
  const driver = this.useCreateApi ? this.driverForCreating : this.driverForLoading;
967
1022
  const loader = this.makeTestLoader(testContainerConfig);
968
- const container = await this.resolveContainer(loader, requestHeader, driver);
1023
+ const container = await this.resolveContainer(
1024
+ loader,
1025
+ requestHeader,
1026
+ driver,
1027
+ pendingLocalState,
1028
+ );
969
1029
  await this.waitContainerToCatchUp(container);
970
1030
 
971
1031
  return container;
@@ -978,10 +1038,11 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
978
1038
  this.useCreateApi = true;
979
1039
  this._loaderContainerTracker.reset();
980
1040
  this._logger = undefined;
1041
+ this._tracker = undefined;
981
1042
  this._documentServiceFactory = undefined;
982
1043
  this._urlResolver = undefined;
983
1044
  this._documentIdStrategy.reset();
984
- const logError = getUnexpectedLogErrorException(this._logger);
1045
+ const logError = getUnexpectedLogErrorException(this._tracker);
985
1046
  if (logError) {
986
1047
  throw logError;
987
1048
  }
@@ -1027,7 +1088,7 @@ export class TestObjectProviderWithVersionedLoad implements ITestObjectProvider
1027
1088
  * @internal
1028
1089
  */
1029
1090
  export function getUnexpectedLogErrorException(
1030
- logger: EventAndErrorTrackingLogger | undefined,
1091
+ logger: IEventAndErrorTrackingLogger | undefined,
1031
1092
  prefix?: string,
1032
1093
  ) {
1033
1094
  if (logger === undefined) {
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert, Deferred } from "@fluidframework/core-utils";
6
+ import { assert, Deferred } from "@fluidframework/core-utils/internal";
7
7
  import type * as Mocha from "mocha";
8
8
 
9
9
  // @deprecated this value is no longer used
@@ -1,8 +0,0 @@
1
- {
2
- "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
- "extends": "../../../common/build/build-common/api-extractor-base.cjs.primary.json",
4
- // CJS is actually secondary; so, no report.
5
- "apiReport": {
6
- "enabled": false
7
- }
8
- }