@serenity-js/core 3.23.2 → 3.24.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 (137) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/lib/errors/ErrorFactory.js +4 -4
  3. package/lib/errors/ErrorFactory.js.map +1 -1
  4. package/lib/errors/RaiseErrors.d.ts +2 -2
  5. package/lib/errors/RaiseErrors.js +2 -2
  6. package/lib/io/index.d.ts +0 -1
  7. package/lib/io/index.d.ts.map +1 -1
  8. package/lib/io/index.js +0 -1
  9. package/lib/io/index.js.map +1 -1
  10. package/lib/io/inspectedObject.js +1 -1
  11. package/lib/io/inspectedObject.js.map +1 -1
  12. package/lib/io/reflection/ValueInspector.d.ts +56 -0
  13. package/lib/io/reflection/ValueInspector.d.ts.map +1 -0
  14. package/lib/io/reflection/ValueInspector.js +149 -0
  15. package/lib/io/reflection/ValueInspector.js.map +1 -0
  16. package/lib/io/reflection/index.d.ts +1 -2
  17. package/lib/io/reflection/index.d.ts.map +1 -1
  18. package/lib/io/reflection/index.js +1 -2
  19. package/lib/io/reflection/index.js.map +1 -1
  20. package/lib/io/stringified.js +7 -90
  21. package/lib/io/stringified.js.map +1 -1
  22. package/lib/screenplay/Activity.d.ts +5 -12
  23. package/lib/screenplay/Activity.d.ts.map +1 -1
  24. package/lib/screenplay/Activity.js +3 -14
  25. package/lib/screenplay/Activity.js.map +1 -1
  26. package/lib/screenplay/Actor.js +1 -1
  27. package/lib/screenplay/Actor.js.map +1 -1
  28. package/lib/screenplay/Interaction.d.ts +4 -3
  29. package/lib/screenplay/Interaction.d.ts.map +1 -1
  30. package/lib/screenplay/Interaction.js +2 -2
  31. package/lib/screenplay/Interaction.js.map +1 -1
  32. package/lib/screenplay/Question.d.ts +73 -21
  33. package/lib/screenplay/Question.d.ts.map +1 -1
  34. package/lib/screenplay/Question.js +237 -30
  35. package/lib/screenplay/Question.js.map +1 -1
  36. package/lib/screenplay/Task.d.ts +16 -15
  37. package/lib/screenplay/Task.d.ts.map +1 -1
  38. package/lib/screenplay/Task.js +14 -14
  39. package/lib/screenplay/Task.js.map +1 -1
  40. package/lib/screenplay/abilities/Ability.d.ts +8 -6
  41. package/lib/screenplay/abilities/Ability.d.ts.map +1 -1
  42. package/lib/screenplay/abilities/Ability.js +8 -6
  43. package/lib/screenplay/abilities/Ability.js.map +1 -1
  44. package/lib/screenplay/abilities/AbilityType.d.ts +3 -3
  45. package/lib/screenplay/abilities/AnswerQuestions.d.ts +0 -1
  46. package/lib/screenplay/abilities/AnswerQuestions.d.ts.map +1 -1
  47. package/lib/screenplay/abilities/AnswerQuestions.js +2 -4
  48. package/lib/screenplay/abilities/AnswerQuestions.js.map +1 -1
  49. package/lib/screenplay/abilities/PerformActivities.d.ts +5 -3
  50. package/lib/screenplay/abilities/PerformActivities.d.ts.map +1 -1
  51. package/lib/screenplay/abilities/PerformActivities.js +12 -10
  52. package/lib/screenplay/abilities/PerformActivities.js.map +1 -1
  53. package/lib/screenplay/artifacts/CollectsArtifacts.d.ts +2 -2
  54. package/lib/screenplay/notes/NotepadAdapter.d.ts.map +1 -1
  55. package/lib/screenplay/notes/NotepadAdapter.js +44 -4
  56. package/lib/screenplay/notes/NotepadAdapter.js.map +1 -1
  57. package/lib/screenplay/questions/Describable.d.ts +27 -0
  58. package/lib/screenplay/questions/Describable.d.ts.map +1 -0
  59. package/lib/screenplay/questions/Describable.js +40 -0
  60. package/lib/screenplay/questions/Describable.js.map +1 -0
  61. package/lib/screenplay/questions/DescriptionFormattingOptions.d.ts +14 -0
  62. package/lib/screenplay/questions/DescriptionFormattingOptions.d.ts.map +1 -0
  63. package/lib/screenplay/questions/DescriptionFormattingOptions.js +3 -0
  64. package/lib/screenplay/questions/DescriptionFormattingOptions.js.map +1 -0
  65. package/lib/screenplay/questions/Expectation.d.ts +6 -10
  66. package/lib/screenplay/questions/Expectation.d.ts.map +1 -1
  67. package/lib/screenplay/questions/Expectation.js +12 -15
  68. package/lib/screenplay/questions/Expectation.js.map +1 -1
  69. package/lib/screenplay/questions/List.d.ts +1 -3
  70. package/lib/screenplay/questions/List.d.ts.map +1 -1
  71. package/lib/screenplay/questions/List.js +6 -31
  72. package/lib/screenplay/questions/List.js.map +1 -1
  73. package/lib/screenplay/questions/Unanswered.d.ts +1 -0
  74. package/lib/screenplay/questions/Unanswered.d.ts.map +1 -1
  75. package/lib/screenplay/questions/Unanswered.js +3 -0
  76. package/lib/screenplay/questions/Unanswered.js.map +1 -1
  77. package/lib/screenplay/questions/expectations/ExpectationDetails.js +1 -1
  78. package/lib/screenplay/questions/expectations/ExpectationDetails.js.map +1 -1
  79. package/lib/screenplay/questions/index.d.ts +3 -1
  80. package/lib/screenplay/questions/index.d.ts.map +1 -1
  81. package/lib/screenplay/questions/index.js +3 -1
  82. package/lib/screenplay/questions/index.js.map +1 -1
  83. package/lib/screenplay/questions/tag-functions.d.ts +228 -0
  84. package/lib/screenplay/questions/tag-functions.d.ts.map +1 -0
  85. package/lib/screenplay/questions/tag-functions.js +115 -0
  86. package/lib/screenplay/questions/tag-functions.js.map +1 -0
  87. package/lib/screenplay/time/activities/Wait.d.ts.map +1 -1
  88. package/lib/screenplay/time/activities/Wait.js +4 -3
  89. package/lib/screenplay/time/activities/Wait.js.map +1 -1
  90. package/package.json +6 -6
  91. package/src/errors/ErrorFactory.ts +5 -5
  92. package/src/errors/RaiseErrors.ts +2 -2
  93. package/src/io/index.ts +0 -1
  94. package/src/io/inspectedObject.ts +2 -2
  95. package/src/io/reflection/ValueInspector.ts +165 -0
  96. package/src/io/reflection/index.ts +1 -2
  97. package/src/io/stringified.ts +7 -103
  98. package/src/screenplay/Activity.ts +6 -17
  99. package/src/screenplay/Actor.ts +2 -2
  100. package/src/screenplay/Interaction.ts +5 -4
  101. package/src/screenplay/Question.ts +299 -49
  102. package/src/screenplay/Task.ts +18 -17
  103. package/src/screenplay/abilities/Ability.ts +8 -6
  104. package/src/screenplay/abilities/AbilityType.ts +3 -3
  105. package/src/screenplay/abilities/AnswerQuestions.ts +2 -5
  106. package/src/screenplay/abilities/PerformActivities.ts +35 -18
  107. package/src/screenplay/artifacts/CollectsArtifacts.ts +2 -2
  108. package/src/screenplay/notes/NotepadAdapter.ts +57 -6
  109. package/src/screenplay/questions/Describable.ts +48 -0
  110. package/src/screenplay/questions/DescriptionFormattingOptions.ts +13 -0
  111. package/src/screenplay/questions/Expectation.ts +19 -19
  112. package/src/screenplay/questions/List.ts +7 -41
  113. package/src/screenplay/questions/Unanswered.ts +4 -0
  114. package/src/screenplay/questions/expectations/ExpectationDetails.ts +2 -2
  115. package/src/screenplay/questions/index.ts +3 -1
  116. package/src/screenplay/questions/tag-functions.ts +313 -0
  117. package/src/screenplay/time/activities/Wait.ts +4 -3
  118. package/lib/io/isPlainObject.d.ts +0 -7
  119. package/lib/io/isPlainObject.d.ts.map +0 -1
  120. package/lib/io/isPlainObject.js +0 -25
  121. package/lib/io/isPlainObject.js.map +0 -1
  122. package/lib/io/reflection/isPrimitive.d.ts +0 -8
  123. package/lib/io/reflection/isPrimitive.d.ts.map +0 -1
  124. package/lib/io/reflection/isPrimitive.js +0 -24
  125. package/lib/io/reflection/isPrimitive.js.map +0 -1
  126. package/lib/io/reflection/typeOf.d.ts +0 -7
  127. package/lib/io/reflection/typeOf.d.ts.map +0 -1
  128. package/lib/io/reflection/typeOf.js +0 -35
  129. package/lib/io/reflection/typeOf.js.map +0 -1
  130. package/lib/screenplay/questions/q.d.ts +0 -66
  131. package/lib/screenplay/questions/q.d.ts.map +0 -1
  132. package/lib/screenplay/questions/q.js +0 -77
  133. package/lib/screenplay/questions/q.js.map +0 -1
  134. package/src/io/isPlainObject.ts +0 -24
  135. package/src/io/reflection/isPrimitive.ts +0 -20
  136. package/src/io/reflection/typeOf.ts +0 -31
  137. package/src/screenplay/questions/q.ts +0 -82
@@ -29,6 +29,8 @@ const util = __importStar(require("util")); // eslint-disable-line unicorn/impor
29
29
  const errors_1 = require("../errors");
30
30
  const io_1 = require("../io");
31
31
  const Interaction_1 = require("./Interaction");
32
+ const Describable_1 = require("./questions/Describable");
33
+ const tag_functions_1 = require("./questions/tag-functions");
32
34
  const Unanswered_1 = require("./questions/Unanswered");
33
35
  /**
34
36
  * **Questions** describe how {@apilink Actor|actors} should query the system under test or the test environment to retrieve some information.
@@ -95,16 +97,18 @@ const Unanswered_1 = require("./questions/Unanswered");
95
97
  * import { Ensure, equals } from '@serenity-js/assertions'
96
98
  *
97
99
  * const RequestWasSuccessful = () =>
98
- * Question.about<number>(`the text of the last response status`, actor => {
99
- * return LastResponse.status().answeredBy(actor) === 200;
100
- * });
100
+ * Question.about<number>(`the text of the last response status`, async actor => {
101
+ * const status = await actor.answer(LastResponse.status());
102
+ *
103
+ * return status === 200;
104
+ * })
101
105
  *
102
106
  * await actorCalled('Quentin')
103
107
  * .whoCan(CallAnApi.at('https://api.example.org/'));
104
108
  * .attemptsTo(
105
109
  * Send.a(GetRequest.to('/books/0-688-00230-7')),
106
110
  * Ensure.that(RequestWasSuccessful(), isTrue()),
107
- * );
111
+ * )
108
112
  * ```
109
113
  *
110
114
  * Note that the above example is for demonstration purposes only, Serenity/JS provides an easier way to
@@ -120,12 +124,12 @@ const Unanswered_1 = require("./questions/Unanswered");
120
124
  * .attemptsTo(
121
125
  * Send.a(GetRequest.to('/books/0-688-00230-7')),
122
126
  * Ensure.that(LastResponse.status(), equals(200)),
123
- * );
127
+ * )
124
128
  * ```
125
129
  *
126
130
  * @group Screenplay Pattern
127
131
  */
128
- class Question {
132
+ class Question extends Describable_1.Describable {
129
133
  static about(description, body, metaQuestionBody) {
130
134
  const statement = typeof metaQuestionBody === 'function'
131
135
  ? new MetaQuestionStatement(description, body, metaQuestionBody)
@@ -211,9 +215,18 @@ class Question {
211
215
  * Generates a {@apilink QuestionAdapter} that resolves
212
216
  * any {@apilink Answerable} elements of the provided array.
213
217
  */
214
- static fromArray(source) {
215
- return Question.about('value', async (actor) => {
216
- return await (0, io_1.asyncMap)(source, async (item) => actor.answer(item));
218
+ static fromArray(source, options) {
219
+ const formatter = new ValueFormatter(ValueFormatter.defaultOptions);
220
+ const description = source.length === 0
221
+ ? '[ ]'
222
+ : Question.about(formatter.format(source), async (actor) => {
223
+ const descriptions = await (0, io_1.asyncMap)(source, item => item instanceof Describable_1.Describable
224
+ ? item.describedBy(actor)
225
+ : Question.formattedValue(options).of(item).answeredBy(actor));
226
+ return `[ ${descriptions.join(', ')} ]`;
227
+ });
228
+ return Question.about(description, async (actor) => {
229
+ return await (0, io_1.asyncMap)(source, item => actor.answer(item));
217
230
  });
218
231
  }
219
232
  /**
@@ -237,6 +250,60 @@ class Question {
237
250
  && typeof maybeMetaQuestion['of'] === 'function'
238
251
  && maybeMetaQuestion['of'].length === 1; // arity of 1
239
252
  }
253
+ /**
254
+ * Creates a {@apilink MetaQuestion} that can be composed with any {@apilink Answerable}
255
+ * to produce a single-line description of its value.
256
+ *
257
+ * ```ts
258
+ * import { actorCalled, Question } from '@serenity-js/core'
259
+ * import { Ensure, equals } from '@serenity-js/assertions'
260
+ *
261
+ * const accountDetails = () =>
262
+ * Question.about('account details', actor => ({ name: 'Alice', age: 28 }))
263
+ *
264
+ * await actorCalled('Alice').attemptsTo(
265
+ * Ensure.that(
266
+ * Question.formattedValue().of(accountDetails()),
267
+ * equals('{ name: "Alice", age: 28 }'),
268
+ * ),
269
+ * )
270
+ * ```
271
+ *
272
+ * @param options
273
+ */
274
+ static formattedValue(options) {
275
+ return MetaQuestionAboutFormattedValue.using(options);
276
+ }
277
+ /**
278
+ * Creates a {@apilink MetaQuestion} that can be composed with any {@apilink Answerable}
279
+ * to return its value when the answerable is a {@apilink Question},
280
+ * or the answerable itself otherwise.
281
+ *
282
+ * The description of the resulting question is produced by calling {@apilink Question.description} on the
283
+ * provided answerable.
284
+ *
285
+ * ```ts
286
+ * import { actorCalled, Question } from '@serenity-js/core'
287
+ * import { Ensure, equals } from '@serenity-js/assertions'
288
+ *
289
+ * const accountDetails = () =>
290
+ * Question.about('account details', actor => ({ name: 'Alice', age: 28 }))
291
+ *
292
+ * await actorCalled('Alice').attemptsTo(
293
+ * Ensure.that(
294
+ * Question.description().of(accountDetails()),
295
+ * equals('account details'),
296
+ * ),
297
+ * Ensure.that(
298
+ * Question.value().of(accountDetails()),
299
+ * equals({ name: 'Alice', age: 28 }),
300
+ * ),
301
+ * )
302
+ * ```
303
+ */
304
+ static value() {
305
+ return new MetaQuestionAboutValue();
306
+ }
240
307
  static createAdapter(statement) {
241
308
  function getStatement() {
242
309
  return statement;
@@ -277,7 +344,7 @@ class Question {
277
344
  if (key === 'then') {
278
345
  return;
279
346
  }
280
- return Question.about(Question.fieldDescription(target, key), async (actor) => {
347
+ return Question.about(Question.staticFieldDescription(target, key), async (actor) => {
281
348
  const answer = await actor.answer(target);
282
349
  if (!isDefined(answer)) {
283
350
  return undefined; // eslint-disable-line unicorn/no-useless-undefined
@@ -286,7 +353,7 @@ class Question {
286
353
  return typeof field === 'function'
287
354
  ? field.bind(answer)
288
355
  : field;
289
- });
356
+ }).describedAs(Question.formattedValue());
290
357
  },
291
358
  set(currentStatement, key, value, receiver) {
292
359
  const target = currentStatement();
@@ -311,7 +378,7 @@ class Question {
311
378
  },
312
379
  });
313
380
  }
314
- static fieldDescription(target, key) {
381
+ static staticFieldDescription(target, key) {
315
382
  // "of" is characteristic of Serenity/JS MetaQuestion
316
383
  if (key === 'of') {
317
384
  return `${target} ${key}`;
@@ -333,6 +400,21 @@ class Question {
333
400
  ].join('');
334
401
  return `${targetDescription}${parameterDescriptions}`;
335
402
  }
403
+ /**
404
+ * Changes the description of this object, as returned by {@apilink Describable.describedBy}
405
+ * and {@apilink Describable.toString}.
406
+ *
407
+ * @param description
408
+ * Replaces the current description according to the following rules:
409
+ * - If `description` is an {@apilink Answerable}, it replaces the current description
410
+ * - If `description` is a {@apilink MetaQuestion}, the current description is passed as `context` to `description.of(context)`, and the result replaces the current description
411
+ */
412
+ describedAs(description) {
413
+ super.setDescription(Question.isAMetaQuestion(description)
414
+ ? description.of(this)
415
+ : description);
416
+ return this;
417
+ }
336
418
  /**
337
419
  * Maps this question to one of a different type.
338
420
  *
@@ -355,12 +437,10 @@ exports.Question = Question;
355
437
  * @package
356
438
  */
357
439
  class QuestionStatement extends Interaction_1.Interaction {
358
- subject;
359
440
  body;
360
441
  answer = new Unanswered_1.Unanswered();
361
442
  constructor(subject, body, location = QuestionStatement.callerLocation(4)) {
362
443
  super(subject, location);
363
- this.subject = subject;
364
444
  this.body = body;
365
445
  }
366
446
  /**
@@ -380,13 +460,12 @@ class QuestionStatement extends Interaction_1.Interaction {
380
460
  [util.inspect.custom](depth, options, inspect) {
381
461
  return (0, io_1.inspectedObject)(this.answer)(depth, options, inspect);
382
462
  }
383
- describedAs(subject) {
384
- this.subject = subject;
463
+ describedAs(description) {
464
+ super.setDescription(Question.isAMetaQuestion(description)
465
+ ? description.of(this)
466
+ : description);
385
467
  return this;
386
468
  }
387
- toString() {
388
- return this.subject;
389
- }
390
469
  as(mapping) {
391
470
  return Question.about((0, io_1.f) `${this}.as(${mapping})`, async (actor) => {
392
471
  const answer = await actor.answer(this);
@@ -407,7 +486,7 @@ class MetaQuestionStatement extends QuestionStatement {
407
486
  this.metaQuestionBody = metaQuestionBody;
408
487
  }
409
488
  of(answerable) {
410
- return Question.about(this.toString() + (0, io_1.d) ` of ${answerable}`, actor => actor.answer(this.metaQuestionBody(answerable)));
489
+ return Question.about((0, tag_functions_1.the) `${this} of ${answerable}`, actor => actor.answer(this.metaQuestionBody(answerable)));
411
490
  }
412
491
  }
413
492
  /**
@@ -415,11 +494,9 @@ class MetaQuestionStatement extends QuestionStatement {
415
494
  */
416
495
  class IsPresent extends Question {
417
496
  question;
418
- subject;
419
497
  constructor(question) {
420
- super();
498
+ super((0, io_1.f) `${question}.isPresent()`);
421
499
  this.question = question;
422
- this.subject = (0, io_1.f) `${question}.isPresent()`;
423
500
  }
424
501
  async answeredBy(actor) {
425
502
  try {
@@ -440,13 +517,6 @@ class IsPresent extends Question {
440
517
  return typeof maybeOptional === 'object'
441
518
  && Reflect.has(maybeOptional, 'isPresent');
442
519
  }
443
- describedAs(subject) {
444
- this.subject = subject;
445
- return this;
446
- }
447
- toString() {
448
- return this.subject;
449
- }
450
520
  }
451
521
  /**
452
522
  * @package
@@ -484,4 +554,141 @@ async function recursivelyAnswer(actor, answerable, description, currentRecursio
484
554
  }
485
555
  return answer;
486
556
  }
557
+ class MetaQuestionAboutValue {
558
+ of(answerable) {
559
+ return new QuestionAboutValue(answerable);
560
+ }
561
+ toString() {
562
+ return 'value';
563
+ }
564
+ }
565
+ class QuestionAboutValue extends Question {
566
+ context;
567
+ constructor(context) {
568
+ super(QuestionAboutFormattedValue.of(context).toString());
569
+ this.context = context;
570
+ }
571
+ async answeredBy(actor) {
572
+ return await actor.answer(this.context);
573
+ }
574
+ }
575
+ class MetaQuestionAboutFormattedValue {
576
+ formatter;
577
+ static using(options) {
578
+ return new MetaQuestionAboutFormattedValue(new ValueFormatter({
579
+ ...ValueFormatter.defaultOptions,
580
+ ...options,
581
+ }));
582
+ }
583
+ constructor(formatter) {
584
+ this.formatter = formatter;
585
+ }
586
+ of(context) {
587
+ return new QuestionAboutFormattedValue(this.formatter, context);
588
+ }
589
+ toString() {
590
+ return 'formatted value';
591
+ }
592
+ }
593
+ class QuestionAboutFormattedValue extends Question {
594
+ formatter;
595
+ context;
596
+ static of(context) {
597
+ return new QuestionAboutFormattedValue(new ValueFormatter(ValueFormatter.defaultOptions), context);
598
+ }
599
+ constructor(formatter, context) {
600
+ const description = context === undefined
601
+ ? 'formatted value'
602
+ : formatter.format(context);
603
+ super(description);
604
+ this.formatter = formatter;
605
+ this.context = context;
606
+ }
607
+ async answeredBy(actor) {
608
+ const answer = await actor.answer(this.context);
609
+ return this.formatter.format(answer);
610
+ }
611
+ async describedBy(actor) {
612
+ const unanswered = !this.context
613
+ || !this.context['answer']
614
+ || Unanswered_1.Unanswered.isUnanswered(this.context.answer);
615
+ const answer = unanswered
616
+ ? await actor.answer(this.context)
617
+ : this.context.answer;
618
+ return this.formatter.format(answer);
619
+ }
620
+ of(context) {
621
+ return new QuestionAboutFormattedValue(this.formatter, Question.isAMetaQuestion(this.context)
622
+ ? this.context.of(context)
623
+ : context);
624
+ }
625
+ }
626
+ class ValueFormatter {
627
+ options;
628
+ static defaultOptions = { maxLength: Number.POSITIVE_INFINITY };
629
+ constructor(options) {
630
+ this.options = options;
631
+ }
632
+ format(value) {
633
+ if (value === null) {
634
+ return 'null';
635
+ }
636
+ if (value === undefined) {
637
+ return 'undefined';
638
+ }
639
+ if (typeof value === 'string') {
640
+ return `"${this.trim(value)}"`;
641
+ }
642
+ if (typeof value === 'symbol') {
643
+ return `Symbol(${this.trim(value.description)})`;
644
+ }
645
+ if (typeof value === 'bigint') {
646
+ return `${this.trim(value.toString())}`;
647
+ }
648
+ if (io_1.ValueInspector.isPromise(value)) {
649
+ return 'Promise';
650
+ }
651
+ if (Array.isArray(value)) {
652
+ return value.length === 0
653
+ ? '[ ]'
654
+ : `[ ${this.trim(value.map(item => this.format(item)).join(', '))} ]`;
655
+ }
656
+ if (value instanceof Map) {
657
+ return `Map(${this.format(Object.fromEntries(value.entries()))})`;
658
+ }
659
+ if (value instanceof Set) {
660
+ return `Set(${this.format(Array.from(value.values()))})`;
661
+ }
662
+ if (io_1.ValueInspector.isDate(value)) {
663
+ return `Date(${value.toISOString()})`;
664
+ }
665
+ if (value instanceof RegExp) {
666
+ return `${value}`;
667
+ }
668
+ if (io_1.ValueInspector.hasItsOwnToString(value)) {
669
+ return `${this.trim(value.toString())}`;
670
+ }
671
+ if (io_1.ValueInspector.isPlainObject(value)) {
672
+ const stringifiedEntries = Object
673
+ .entries(value)
674
+ .reduce((acc, [key, value]) => acc.concat(`${key}: ${this.format(value)}`), [])
675
+ .join(', ');
676
+ return `{ ${this.trim(stringifiedEntries)} }`;
677
+ }
678
+ if (typeof value === 'object') {
679
+ const entries = (0, objects_1.significantFieldsOf)(value)
680
+ .map(field => [field, value[field]]);
681
+ return `${value.constructor.name}(${this.format(Object.fromEntries(entries))})`;
682
+ }
683
+ return String(value);
684
+ }
685
+ trim(value) {
686
+ const ellipsis = '...';
687
+ const oneLiner = value.replaceAll(/\n+/g, ' ');
688
+ const maxLength = Math.max(ellipsis.length + 1, this.options.maxLength);
689
+ return oneLiner.length > maxLength
690
+ ? `${oneLiner.slice(0, Math.max(0, maxLength) - ellipsis.length)}${ellipsis}`
691
+ : oneLiner;
692
+ }
693
+ }
487
694
  //# sourceMappingURL=Question.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Question.js","sourceRoot":"","sources":["../../src/screenplay/Question.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Question.js","sourceRoot":"","sources":["../../src/screenplay/Question.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { PerformsActivities } from './activities';
2
2
  import { Activity } from './Activity';
3
+ import type { Answerable } from './Answerable';
3
4
  /**
4
5
  * **Tasks** model **{@apilink Activity|sequences of activities}**
5
6
  * and help you capture meaningful steps of an {@apilink Actor|actor} workflow
@@ -28,11 +29,11 @@ import { Activity } from './Activity';
28
29
  * ## Defining a task
29
30
  *
30
31
  * ```ts
31
- * import { Answerable, Task, d } from '@serenity-js/core'
32
+ * import { Answerable, Task, the } from '@serenity-js/core'
32
33
  * import { By, Click, Enter, PageElement, Press, Key } from '@serenity-js/web'
33
34
  *
34
35
  * const SignIn = (username: Answerable<string>, password: Answerable<string>) =>
35
- * Task.where(d`#actor signs is as ${ username }`,
36
+ * Task.where(the`#actor signs is as ${ username }`,
36
37
  * Enter.theValue(username).into(PageElement.located(By.id('username'))),
37
38
  * Enter.theValue(password).into(PageElement.located(By.id('password'))),
38
39
  * Press.the(Key.Enter),
@@ -48,11 +49,11 @@ import { Activity } from './Activity';
48
49
  * but you're not yet sure what activities it will involve.
49
50
  *
50
51
  * ```ts
51
- * import { Task } from '@serenity-js/core'
52
+ * import { Task, the } from '@serenity-js/core'
52
53
  *
53
54
  * const SignUp = () =>
54
- * Task.where(`#actor signs up for a newsletter`) // no activities provided
55
- * // => task marked as pending
55
+ * Task.where(the`#actor signs up for a newsletter`) // no activities provided
56
+ * // => task marked as pending
56
57
  * ```
57
58
  *
58
59
  * ## Composing activities into tasks
@@ -72,10 +73,10 @@ import { Activity } from './Activity';
72
73
  * The easiest way to implement such task, and any custom Serenity/JS task for this matter, is to use the {@apilink Task.where} method to compose the lower-level activities:
73
74
  *
74
75
  * ```typescript
75
- * import { Task } from '@serenity-js/core'
76
+ * import { Task, the } from '@serenity-js/core'
76
77
  *
77
78
  * const findFlight = (originCity: string, destinationCity: string) =>
78
- * Task.where(`#actors finds a flight from ${ originCity } to ${ destinationCity }`, // task goal
79
+ * Task.where(the`#actor finds a flight from ${ originCity } to ${ destinationCity }`, // task goal
79
80
  * specifyOriginCity(originCity), // activities
80
81
  * specifyDestinationCity(originCity),
81
82
  * )
@@ -97,20 +98,20 @@ import { Activity } from './Activity';
97
98
  * which we can incorporate into our task definitions just like any other activities:
98
99
  *
99
100
  * ```typescript
100
- * import { Task } from '@serenity-js/core'
101
+ * import { Task, the } from '@serenity-js/core'
101
102
  * import { Click, Enter, Key, Press } from '@serenity-js/web'
102
103
  *
103
104
  * import { FlightFinder } from './ui/flight-finder'
104
105
  *
105
106
  * const specifyOriginCity = (originCity: string) =>
106
- * Task.where(`#actor specifies origin city of ${ originCity }`,
107
+ * Task.where(the`#actor specifies origin city of ${ originCity }`,
107
108
  * Click.on(FlightFinder.originAirport),
108
109
  * Enter.theValue(originCity).into(FlightFinder.originAirport),
109
110
  * Press.the(Key.ArrowDown, Key.Enter).into(FlightFinder.originAirport),
110
111
  * )
111
112
  *
112
113
  * const specifyDestinationCity = (destinationCity: string) =>
113
- * Task.where(`#actor specifies destination city of ${ destinationCity }`,
114
+ * Task.where(the`#actor specifies destination city of ${ destinationCity }`,
114
115
  * Click.on(FlightFinder.destinationAirport),
115
116
  * Enter.theValue(destinationCity).into(FlightFinder.destinationAirport),
116
117
  * Press.the(Key.ArrowDown, Key.Enter).into(FlightFinder.destinationAirport),
@@ -123,23 +124,23 @@ import { Activity } from './Activity';
123
124
  * by **extracting a parameterised task**, in this case called `specifyCity`:
124
125
  *
125
126
  * ```typescript
126
- * import { Task } from '@serenity-js/core'
127
+ * import { Task, the } from '@serenity-js/core'
127
128
  * import { Click, Enter, Key, PageElement, Press } from '@serenity-js/web'
128
129
  *
129
130
  * import { FlightFinder } from './ui/flight-finder'
130
131
  *
131
132
  * const specifyOriginCity = (originCity: string) =>
132
- * Task.where(`#actor specifies origin city of ${ originCity }`,
133
+ * Task.where(the`#actor specifies origin city of ${ originCity }`,
133
134
  * specifyCity(originCity, FlightFinder.originAirport)
134
135
  * )
135
136
  *
136
137
  * const specifyDestinationCity = (destinationCity: string) =>
137
- * Task.where(`#actor specifies destination city of ${ destinationCity }`,
138
+ * Task.where(the`#actor specifies destination city of ${ destinationCity }`,
138
139
  * specifyCity(destinationCity, FlightFinder.destinationAirport),
139
140
  * )
140
141
  *
141
142
  * const specifyCity = (cityName: string, widget: PageElement) =>
142
- * Task.where(`#actor specifies city of ${ cityName } in ${ widget }`,
143
+ * Task.where(the`#actor specifies city of ${ cityName } in ${ widget }`,
143
144
  * Click.on(widget),
144
145
  * Enter.theValue(cityName).into(widget),
145
146
  * Press.the(Key.ArrowDown, Key.Enter).into(widget),
@@ -179,7 +180,7 @@ export declare abstract class Task extends Activity {
179
180
  * @param activities
180
181
  * A sequence of lower-level activities that constitute this task
181
182
  */
182
- static where(description: string, ...activities: Activity[]): Task;
183
+ static where(description: Answerable<string>, ...activities: Activity[]): Task;
183
184
  /**
184
185
  * Instructs the provided {@apilink Actor} to perform this {@apilink Task}.
185
186
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../src/screenplay/Task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwKG;AACH,8BAAsB,IAAK,SAAQ,QAAQ;IAEvC;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI;IAMlE;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAC/D"}
1
+ {"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../src/screenplay/Task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwKG;AACH,8BAAsB,IAAK,SAAQ,QAAQ;IAEvC;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI;IAM9E;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAC/D"}
@@ -31,11 +31,11 @@ const Activity_1 = require("./Activity");
31
31
  * ## Defining a task
32
32
  *
33
33
  * ```ts
34
- * import { Answerable, Task, d } from '@serenity-js/core'
34
+ * import { Answerable, Task, the } from '@serenity-js/core'
35
35
  * import { By, Click, Enter, PageElement, Press, Key } from '@serenity-js/web'
36
36
  *
37
37
  * const SignIn = (username: Answerable<string>, password: Answerable<string>) =>
38
- * Task.where(d`#actor signs is as ${ username }`,
38
+ * Task.where(the`#actor signs is as ${ username }`,
39
39
  * Enter.theValue(username).into(PageElement.located(By.id('username'))),
40
40
  * Enter.theValue(password).into(PageElement.located(By.id('password'))),
41
41
  * Press.the(Key.Enter),
@@ -51,11 +51,11 @@ const Activity_1 = require("./Activity");
51
51
  * but you're not yet sure what activities it will involve.
52
52
  *
53
53
  * ```ts
54
- * import { Task } from '@serenity-js/core'
54
+ * import { Task, the } from '@serenity-js/core'
55
55
  *
56
56
  * const SignUp = () =>
57
- * Task.where(`#actor signs up for a newsletter`) // no activities provided
58
- * // => task marked as pending
57
+ * Task.where(the`#actor signs up for a newsletter`) // no activities provided
58
+ * // => task marked as pending
59
59
  * ```
60
60
  *
61
61
  * ## Composing activities into tasks
@@ -75,10 +75,10 @@ const Activity_1 = require("./Activity");
75
75
  * The easiest way to implement such task, and any custom Serenity/JS task for this matter, is to use the {@apilink Task.where} method to compose the lower-level activities:
76
76
  *
77
77
  * ```typescript
78
- * import { Task } from '@serenity-js/core'
78
+ * import { Task, the } from '@serenity-js/core'
79
79
  *
80
80
  * const findFlight = (originCity: string, destinationCity: string) =>
81
- * Task.where(`#actors finds a flight from ${ originCity } to ${ destinationCity }`, // task goal
81
+ * Task.where(the`#actor finds a flight from ${ originCity } to ${ destinationCity }`, // task goal
82
82
  * specifyOriginCity(originCity), // activities
83
83
  * specifyDestinationCity(originCity),
84
84
  * )
@@ -100,20 +100,20 @@ const Activity_1 = require("./Activity");
100
100
  * which we can incorporate into our task definitions just like any other activities:
101
101
  *
102
102
  * ```typescript
103
- * import { Task } from '@serenity-js/core'
103
+ * import { Task, the } from '@serenity-js/core'
104
104
  * import { Click, Enter, Key, Press } from '@serenity-js/web'
105
105
  *
106
106
  * import { FlightFinder } from './ui/flight-finder'
107
107
  *
108
108
  * const specifyOriginCity = (originCity: string) =>
109
- * Task.where(`#actor specifies origin city of ${ originCity }`,
109
+ * Task.where(the`#actor specifies origin city of ${ originCity }`,
110
110
  * Click.on(FlightFinder.originAirport),
111
111
  * Enter.theValue(originCity).into(FlightFinder.originAirport),
112
112
  * Press.the(Key.ArrowDown, Key.Enter).into(FlightFinder.originAirport),
113
113
  * )
114
114
  *
115
115
  * const specifyDestinationCity = (destinationCity: string) =>
116
- * Task.where(`#actor specifies destination city of ${ destinationCity }`,
116
+ * Task.where(the`#actor specifies destination city of ${ destinationCity }`,
117
117
  * Click.on(FlightFinder.destinationAirport),
118
118
  * Enter.theValue(destinationCity).into(FlightFinder.destinationAirport),
119
119
  * Press.the(Key.ArrowDown, Key.Enter).into(FlightFinder.destinationAirport),
@@ -126,23 +126,23 @@ const Activity_1 = require("./Activity");
126
126
  * by **extracting a parameterised task**, in this case called `specifyCity`:
127
127
  *
128
128
  * ```typescript
129
- * import { Task } from '@serenity-js/core'
129
+ * import { Task, the } from '@serenity-js/core'
130
130
  * import { Click, Enter, Key, PageElement, Press } from '@serenity-js/web'
131
131
  *
132
132
  * import { FlightFinder } from './ui/flight-finder'
133
133
  *
134
134
  * const specifyOriginCity = (originCity: string) =>
135
- * Task.where(`#actor specifies origin city of ${ originCity }`,
135
+ * Task.where(the`#actor specifies origin city of ${ originCity }`,
136
136
  * specifyCity(originCity, FlightFinder.originAirport)
137
137
  * )
138
138
  *
139
139
  * const specifyDestinationCity = (destinationCity: string) =>
140
- * Task.where(`#actor specifies destination city of ${ destinationCity }`,
140
+ * Task.where(the`#actor specifies destination city of ${ destinationCity }`,
141
141
  * specifyCity(destinationCity, FlightFinder.destinationAirport),
142
142
  * )
143
143
  *
144
144
  * const specifyCity = (cityName: string, widget: PageElement) =>
145
- * Task.where(`#actor specifies city of ${ cityName } in ${ widget }`,
145
+ * Task.where(the`#actor specifies city of ${ cityName } in ${ widget }`,
146
146
  * Click.on(widget),
147
147
  * Enter.theValue(cityName).into(widget),
148
148
  * Press.the(Key.ArrowDown, Key.Enter).into(widget),
@@ -1 +1 @@
1
- {"version":3,"file":"Task.js","sourceRoot":"","sources":["../../src/screenplay/Task.ts"],"names":[],"mappings":";;;AAAA,sCAAuD;AAEvD,yCAAsC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwKG;AACH,MAAsB,IAAK,SAAQ,mBAAQ;IAEvC;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,WAAmB,EAAE,GAAG,UAAsB;QACvD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,CAAC,IAAI,wBAAwB,CAAC,WAAW,EAAE,UAAU,CAAC;YACvD,CAAC,CAAC,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;CAaJ;AA5BD,oBA4BC;AAED;;GAEG;AACH,MAAM,wBAAyB,SAAQ,IAAI;IACE;IAAzC,YAAY,WAAmB,EAAU,UAAsB;QAC3D,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QADN,eAAU,GAAV,UAAU,CAAY;IAE/D,CAAC;IAED,SAAS,CAAC,KAAyB;QAC/B,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,kBAAmB,SAAQ,IAAI;IACjC,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,KAAyB;QAC/B,OAAO,OAAO,CAAC,MAAM,CACjB,IAAI,mCAA0B,CAAC,iBAAkB,IAAI,CAAC,QAAQ,EAAG,gCAAgC,CAAC,CACrG,CAAC;IACN,CAAC;CACJ"}
1
+ {"version":3,"file":"Task.js","sourceRoot":"","sources":["../../src/screenplay/Task.ts"],"names":[],"mappings":";;;AAAA,sCAAuD;AAEvD,yCAAsC;AAGtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwKG;AACH,MAAsB,IAAK,SAAQ,mBAAQ;IAEvC;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,WAA+B,EAAE,GAAG,UAAsB;QACnE,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,CAAC,IAAI,wBAAwB,CAAC,WAAW,EAAE,UAAU,CAAC;YACvD,CAAC,CAAC,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;CAaJ;AA5BD,oBA4BC;AAED;;GAEG;AACH,MAAM,wBAAyB,SAAQ,IAAI;IACc;IAArD,YAAY,WAA+B,EAAU,UAAsB;QACvE,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QADM,eAAU,GAAV,UAAU,CAAY;IAE3E,CAAC;IAED,SAAS,CAAC,KAAyB;QAC/B,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,kBAAmB,SAAQ,IAAI;IACjC,YAAY,WAA+B;QACvC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,KAAyB;QAC/B,OAAO,OAAO,CAAC,MAAM,CACjB,IAAI,mCAA0B,CAAC,iBAAkB,IAAI,CAAC,QAAQ,EAAG,gCAAgC,CAAC,CACrG,CAAC;IACN,CAAC;CACJ"}