1.. _module-pw_console-testing: 2 3===================== 4Manual Test Procedure 5===================== 6.. pigweed-module-subpage:: 7 :name: pw_console 8 9``pw_console`` is a Terminal based user interface which is difficult to 10completely test in an automated fashion. Unit tests that don't depend on the 11user interface are preferred but not always possible. For those situations 12manual tests should be added here to validate expected behavior. 13 14Run in Test Mode 15================ 16 17Begin each section below by running the console in test mode: 18 19.. code-block:: shell 20 21 touch /tmp/empty.yaml 22 env PW_CONSOLE_CONFIG_FILE='/tmp/empty.yaml' pw console --test-mode 23 24Test Sections 25============= 26 27Log Pane: Basic Actions 28^^^^^^^^^^^^^^^^^^^^^^^ 29 30.. list-table:: 31 :widths: 5 45 45 5 32 :header-rows: 1 33 34 * - # 35 - Test Action 36 - Expected Result 37 - ✅ 38 39 * - 1 40 - Click the :guilabel:`Fake Device` window title 41 - Log pane is focused 42 - |checkbox| 43 44 * - 2 45 - In the main menu enable :guilabel:`[File] > Log Table View > Hide Date` 46 - The time column shows only the time. E.g. ``09:34:53``. 47 - |checkbox| 48 49 * - 3 50 - In the main menu turn off :guilabel:`[File] > Log Table View > Hide Date` 51 - The time column shows the date and time. E.g. ``20220208 09:34:53``. 52 - |checkbox| 53 54 * - 4 55 - Click :guilabel:`Search` on the log toolbar 56 - | The search bar appears 57 | The cursor should appear after the ``/`` 58 - |checkbox| 59 60 * - 5 61 - Press :kbd:`Ctrl-c` 62 - The search bar disappears 63 - |checkbox| 64 65 * - 6 66 - Click :guilabel:`Follow` on the log toolbar 67 - Logs stop following 68 - |checkbox| 69 70 * - 7 71 - Click :guilabel:`Table` on the log toolbar 72 - Table mode is disabled 73 - |checkbox| 74 75 * - 8 76 - Click :guilabel:`Wrap` on the log toolbar 77 - Line wrapping is enabled 78 - |checkbox| 79 80 * - 9 81 - Click :guilabel:`Clear` on the log toolbar 82 - | All log lines are erased 83 | Follow mode is on 84 | New lines start appearing 85 - |checkbox| 86 87 * - 10 88 - | Mouse drag across a few log messages 89 - | Entire logs are highlighted and a dialog 90 | box appears in the upper right 91 - |checkbox| 92 93 * - 11 94 - | Without scrolling mouse drag across a set 95 | of different log messages. 96 - | The old selection disappears leaving only the new selection. 97 - |checkbox| 98 99 * - 12 100 - | Click the :guilabel:`Cancel` button 101 | in the selection dialog box. 102 - | The selection and the dialog box disappears. 103 - |checkbox| 104 105 * - 13 106 - | Mouse drag across a few log messages and 107 | click the :guilabel:`Save as File` button. 108 - | The save as file dialog appears with the 109 | :guilabel:`[x] Selected Lines Only` opion checked. 110 - |checkbox| 111 112 * - 14 113 - | Press :kbd:`Cancel` 114 - | The save dialog closes 115 - |checkbox| 116 117 * - 15 118 - | Click the :guilabel:`Save` button on the log toolbar. 119 | A dialog appears prompting for a file. 120 - | The current working directory should be pre-filled. 121 - |checkbox| 122 123 * - 16 124 - | Check :guilabel:`[x] Table Formatting` 125 | Uncheck :guilabel:`[ ] Selected Lines Only` 126 | Add ``/log.txt`` to the end and press :kbd:`Enter` 127 | Click the menu :guilabel:`[File] > Exit` 128 - | In the terminal run ``cat log.txt`` to verify logs 129 | were saved correctly. 130 - |checkbox| 131 132Log Pane: Search and Filtering 133^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 134 135.. list-table:: 136 :widths: 5 45 45 5 137 :header-rows: 1 138 139 * - # 140 - Test Action 141 - Expected Result 142 - ✅ 143 144 * - 1 145 - Click the :guilabel:`Fake Device` window title 146 - Log pane is focused 147 - |checkbox| 148 149 * - 2 150 - Press :kbd:`/` 151 - | The search bar appears 152 | The cursor should appear after the ``/`` 153 - |checkbox| 154 155 * - 3 156 - | Type ``lorem`` 157 | Press :kbd:`Enter` 158 - | Logs stop following 159 | ``Lorem`` words are highlighted in cyan 160 | The cursor on the first log message 161 | The search toolbar is un-focused and displays: 162 | ``Match 1 / 10`` where the second number (the total match count) 163 | increases once every 10 seconds when new logs arrive. 164 - |checkbox| 165 166 * - 4 167 - Press :kbd:`Ctrl-f` 168 - | The search bar is focused 169 | The cursor should appear after ``/Lorem`` 170 - |checkbox| 171 172 * - 5 173 - Press :kbd:`Ctrl-c` 174 - | The search bar disappears 175 | ``Lorem`` words are no longer highlighted 176 - |checkbox| 177 178 * - 6 179 - Press :kbd:`/` 180 - | The search bar appears and is empty 181 | The cursor should appear after ``/`` 182 - |checkbox| 183 184 * - 7 185 - Click :guilabel:`Matcher:` once 186 - ``Matcher:STRING`` is shown 187 - |checkbox| 188 189 * - 8 190 - | Type ``[=`` 191 | Press :kbd:`Enter` 192 - | All instances of ``[=`` should be highlighted 193 | The cursor should be on log message 2 194 - |checkbox| 195 196 * - 7 197 - Press :kbd:`/` 198 - | The search bar is focused 199 | The cursor should appear after the ``/[=`` 200 - |checkbox| 201 202 * - 8 203 - Press :kbd:`Ctrl-c` 204 - | The search bar disappears 205 | ``[=`` matches are no longer highlighted 206 - |checkbox| 207 208 * - 9 209 - Press :kbd:`/` 210 - | The search bar appears and is empty 211 | The cursor should appear after ``/`` 212 - |checkbox| 213 214 * - 10 215 - Press :kbd:`Up` 216 - The text ``[=`` should appear in the search input field 217 - |checkbox| 218 219 * - 11 220 - Click :guilabel:`Search Enter` 221 - | All instances of ``[=`` should be highlighted 222 | The cursor should be on log message 12 223 - |checkbox| 224 225 * - 12 226 - Click :guilabel:`Add Filter` 227 - | A ``Filters`` toolbar will appear 228 | showing the new filter: ``<\[= (X)>``. 229 | Only log messages matching ``[=`` appear in the logs. 230 | Follow mode is enabled 231 - |checkbox| 232 233 * - 13 234 - | Press :kbd:`/` 235 - | The search bar appears and is empty 236 | The cursor should appear after ``/`` 237 - |checkbox| 238 239 * - 14 240 - | Type ``# 1`` and press :kbd:`Enter` 241 | Click :guilabel:`Add Filter` 242 - | The ``Filters`` toolbar shows a new filter: ``<\#\ 1 (X)>``. 243 | Only log messages matching both filters will appear in the logs. 244 - |checkbox| 245 246 * - 15 247 - | Click the first :guilabel:`(X)` 248 | in the filter toolbar. 249 - | The ``Filters`` toolbar shows only one filter: ``<\#\ 1 (X)>``. 250 | More log messages will appear in the log window 251 | Lines all end in: ``# 1.*`` 252 - |checkbox| 253 254 * - 16 255 - Click :guilabel:`Clear Filters` 256 - | The ``Filters`` toolbar will disappear. 257 | All log messages will be shown in the log window. 258 - |checkbox| 259 260 * - 17 261 - | Press :kbd:`/` 262 | Type ``BAT`` 263 | Click :guilabel:`Column` until ``Column:Module`` is shown 264 | Press :kbd:`Enter` 265 - | Logs stop following 266 | ``BAT`` is highlighted in cyan 267 | The cursor on the 3rd log message 268 | The search toolbar is un-focused and displays: 269 | ``Match 1 / 10`` where the second number (the total match count) 270 - |checkbox| 271 272 * - 18 273 - Press :kbd:`n` 274 - | ``BAT`` is highlighted in cyan 275 | The cursor on the 7th log message and is in the center of the 276 | log window (not the bottom). 277 - |checkbox| 278 279 * - 19 280 - Click :guilabel:`Jump to new matches` 281 - | :guilabel:`Jump to new matches` is checked and every 5 seconds 282 | the cursor jumps to the latest matching log message. 283 - |checkbox| 284 285 * - 20 286 - Click :guilabel:`Follow` 287 - | :guilabel:`Jump to new matches` is unchecked 288 | The cursor jumps to every new log message once a second. 289 - |checkbox| 290 291 * - 21 292 - | Click :guilabel:`Add Filter` 293 - | The Filters toolbar appears with one filter: ``<module BAT (X)>`` 294 | Only logs with Module matching ``BAT`` appear. 295 - |checkbox| 296 297 * - 22 298 - Click :guilabel:`Clear Filters` 299 - | The ``Filters`` toolbar will disappear. 300 | All log messages will be shown in the log window. 301 - |checkbox| 302 303 * - 23 304 - | Press :kbd:`/` 305 | Type ``BAT`` 306 | Click :guilabel:`Invert` 307 - ``[x] Invert`` setting is shown 308 - |checkbox| 309 310 * - 24 311 - | Press :kbd:`Enter` then click :guilabel:`Add Filter` 312 - | The Filters toolbar appears 313 | One filter is shown: ``<NOT module BAT (X)>`` 314 | Only logs with Modules other than ``BAT`` appear. 315 - |checkbox| 316 317Help Windows 318^^^^^^^^^^^^ 319 320.. list-table:: 321 :widths: 5 45 45 5 322 :header-rows: 1 323 324 * - # 325 - Test Action 326 - Expected Result 327 - ✅ 328 329 * - 1 330 - Click the :guilabel:`[Help] > User Guide` 331 - | Window appears showing the user guide with 332 | RST formatting and syntax highlighting 333 - |checkbox| 334 335 * - 2 336 - Press :guilabel:`q` 337 - Window is hidden 338 - |checkbox| 339 340 * - 3 341 - Click the :guilabel:`[Help] > Keyboard Shortcuts` 342 - Window appears showing the keybind list 343 - |checkbox| 344 345 * - 4 346 - Press :kbd:`F1` 347 - Window is hidden 348 - |checkbox| 349 350 * - 5 351 - Click the :guilabel:`[Help] > Console Test Mode Help` 352 - | Window appears showing help with content 353 | ``Welcome to the Pigweed Console Test Mode!`` 354 - |checkbox| 355 356 * - 6 357 - Click the :guilabel:`Close q` button. 358 - Window is hidden 359 - |checkbox| 360 361Floating Windows 362^^^^^^^^^^^^^^^^ 363 364.. list-table:: 365 :widths: 5 45 45 5 366 :header-rows: 1 367 368 * - # 369 - Test Action 370 - Expected Result 371 - ✅ 372 373 * - 1 374 - Start ``pw-console --test-mode`` press ``Ctrl-p`` 375 - The :guilabel:`Menu Items` command runner dialog appears. 376 - |checkbox| 377 378 * - 2 379 - Type :kbd:`exit` and press :kbd:`enter`. 380 - The console exits. 381 - |checkbox| 382 383 * - 3 384 - Restart ``pw-console`` but without the ``--test-mode`` option. 385 - Console starts up with ONLY the Python Results and Repl windows. 386 - |checkbox| 387 388 * - 4 389 - Press ``Ctrl-p`` 390 - The :guilabel:`Menu Items` command runner dialog appears. 391 - |checkbox| 392 393 394Window Management 395^^^^^^^^^^^^^^^^^ 396 397.. list-table:: 398 :widths: 5 45 45 5 399 :header-rows: 1 400 401 * - # 402 - Test Action 403 - Expected Result 404 - ✅ 405 406 * - 1 407 - | Click the :guilabel:`Fake Device` window title 408 - Log pane is focused 409 - |checkbox| 410 411 * - 2 412 - | Click the menu :guilabel:`Windows > #: Fake Device...` 413 | Click :guilabel:`Duplicate pane` 414 - | 3 panes are visible: 415 | Log pane on top 416 | Repl pane in the middle 417 | Log pane on the bottom 418 - |checkbox| 419 420 * - 3 421 - | Click the :guilabel:`Python Repl` window title 422 - Python Repl pane is focused 423 - |checkbox| 424 425 * - 4 426 - Click the :guilabel:`View > Move Window Down` 427 - | 3 panes are visible: 428 | Log pane on top 429 | Log pane in the middle 430 | Repl pane on the bottom 431 - |checkbox| 432 433 * - 5 434 - Click the :guilabel:`View > Move Window Down` again 435 - | Nothing changes 436 | Windows remain in the same order 437 - |checkbox| 438 439 * - 6 440 - Click the :guilabel:`View > Move Window Up` 441 - | 3 panes are visible: 442 | Log pane on top 443 | Repl pane in the middle 444 | Log pane on the bottom 445 - |checkbox| 446 447 * - 7 448 - | Click the menu :guilabel:`Windows > #: Fake Device...` 449 | Click :guilabel:`Remove pane` 450 - | 2 panes are visible: 451 | Repl pane on the top 452 | Log pane on bottom 453 - |checkbox| 454 455 * - 8 456 - | Click the :guilabel:`Python Repl` 457 | window title 458 - Repl pane is focused 459 - |checkbox| 460 461 * - 9 462 - | Hold the keys :guilabel:`Alt- -` 463 | `Alt` and `Minus` 464 - Repl pane shrinks 465 - |checkbox| 466 467 * - 10 468 - Hold the keys :guilabel:`Alt-=` 469 - Repl pane enlarges 470 - |checkbox| 471 472 * - 11 473 - | Click the menu :guilabel:`Windows > 1: Logs fake_device.1` 474 | Click :guilabel:`Duplicate pane` 475 - | 3 panes are visible: 476 | 2 Log panes on the left 477 | Repl pane on the right 478 - |checkbox| 479 480 * - 12 481 - | Click the left top :guilabel:`Logs` window title 482 - Log pane is focused 483 - |checkbox| 484 485 * - 13 486 - Click the :guilabel:`View > Move Window Right` 487 - | 3 panes are visible: 488 | 1 Log panes on the left 489 | 1 Log and Repl pane on the right 490 - |checkbox| 491 492 * - 14 493 - | Click the menu :guilabel:`Windows > Column 2 View Modes` 494 | Then click :guilabel:`[ ] Tabbed Windows` 495 - | 2 panes are visible: 496 | 1 Log panes on the left 497 | 1 Log panes on the right 498 | A tab bar on the top of the right side 499 | `Logs fake_device.1` is highlighted 500 - |checkbox| 501 502 * - 15 503 - | On the right side tab bar 504 | Click :guilabel:`Python Repl` 505 - | 2 panes are visible: 506 | 1 Log pane on the left 507 | 1 Repl pane on the right 508 | `Python Repl` is highlighted 509 | on the tab bar 510 - |checkbox| 511 512Mouse Window Resizing 513^^^^^^^^^^^^^^^^^^^^^ 514 515.. list-table:: 516 :widths: 5 45 45 5 517 :header-rows: 1 518 519 * - # 520 - Test Action 521 - Expected Result 522 - ✅ 523 524 * - 1 525 - | Click the :guilabel:`Fake Device` window 526 - Log pane is focused 527 - |checkbox| 528 529 * - 2 530 - | Left click and hold the :guilabel:`-==-` of that window 531 | Drag the mouse up and down 532 - This log pane is resized 533 - |checkbox| 534 535 * - 3 536 - | Left click and hold the :guilabel:`-==-` 537 | of the :guilabel:`PwConsole Debug` window 538 | Drag the mouse up and down 539 - | The :guilabel:`PwConsole Debug` should NOT be focused 540 | The window should be resized as expected 541 - |checkbox| 542 543 * - 4 544 - Click the :guilabel:`View > Move Window Right` 545 - :guilabel:`Fake Device` should appear in a right side split 546 - |checkbox| 547 548 * - 5 549 - | Left click and hold anywhere on the vertical separator 550 | Drag the mouse left and right 551 - | The window splits should be resized as expected 552 - |checkbox| 553 554 * - 6 555 - Click the :guilabel:`View > Balance Window Sizes` 556 - Window split sizes should reset to equal widths 557 - |checkbox| 558 559 * - 7 560 - | Focus on the :guilabel:`Python Repl` window 561 | Click the :guilabel:`View > Move Window Left` 562 - | :guilabel:`Python Repl` should appear in a left side split 563 | There should be 3 vertical splits in total 564 - |checkbox| 565 566 * - 8 567 - | Left click and hold anywhere on the vertical separator 568 | between the first two splits (Python Repl and the middle split) 569 | Drag the mouse left and right 570 - | The first two window splits should be resized. 571 | The 3rd split size should not change. 572 - |checkbox| 573 574Copy Paste 575^^^^^^^^^^ 576 577.. list-table:: 578 :widths: 5 45 45 5 579 :header-rows: 1 580 581 * - # 582 - Test Action 583 - Expected Result 584 - ✅ 585 586 * - 1 587 - | Click the :guilabel:`Fake Device` window title 588 - Log pane is focused 589 - |checkbox| 590 591 * - 2 592 - | Mouse drag across a few log messages 593 - | A dialog appears in the upper right showing 594 | the number of lines selected and 595 | buttons for :guilabel:`Cancel`, :guilabel:`Select All`, 596 | :guilabel:`Save as File`, and :guilabel:`Copy`. 597 - |checkbox| 598 599 * - 3 600 - | Click the :guilabel:`Copy` button 601 - | Try pasting into a separate text editor 602 | Log lines like this should be pasted: 603 | ``20:07:25 INF APP Log message [ = ] # 25`` 604 | ``20:07:25 INF RADIO Log message [ = ] # 26`` 605 - |checkbox| 606 607 * - 4 608 - | Copy this text in your browser or 609 | text editor to the system clipboard: 610 | ``print('copy paste test!')`` 611 - | Click the :guilabel:`Python Repl` window title 612 | Press :kbd:`Ctrl-v` 613 | ``print('copy paste test!')`` appears 614 | after the prompt. 615 - |checkbox| 616 617 * - 5 618 - Press :kbd:`Enter` 619 - | This appears in Python Results: 620 | ``In [1]: print('copy paste test!')`` 621 | ``copy paste test!`` 622 - |checkbox| 623 624 * - 6 625 - | Click :guilabel:`Ctrl-Alt-c -> Copy Output` 626 | on the Python Results toolbar 627 | Try pasting into a separate text editor 628 - | The contents of the Python Results 629 | are in the system clipboard. 630 - |checkbox| 631 632 * - 7 633 - Click the :guilabel:`Python Results` window title 634 - | Python Results is focused with cursor 635 | appearing below the last line 636 - |checkbox| 637 638 * - 8 639 - | Click and drag over ``copy paste text`` 640 | highlighting won't appear until 641 | after the mouse button is released 642 - | ``copy paste text`` is highlighted 643 - |checkbox| 644 645 * - 9 646 - | Press :kbd:`Ctrl-c` 647 | Try pasting into a separate text editor 648 - | ``copy paste text`` should appear (and is 649 | in the system clipboard) 650 - |checkbox| 651 652 * - 10 653 - Click the :guilabel:`Python Repl` window title 654 - Python Repl is focused 655 - |checkbox| 656 657 * - 11 658 - | Type ``print('hello there')`` into the Python input. 659 | Mouse drag select that text 660 | Press :kbd:`Ctrl-c` 661 - | The selection should disappear. 662 | Try pasting into a separate text editor, the paste should 663 | match the text you drag selected. 664 - |checkbox| 665 666Incremental Stdout 667^^^^^^^^^^^^^^^^^^ 668 669.. list-table:: 670 :widths: 5 45 45 5 671 :header-rows: 1 672 673 * - # 674 - Test Action 675 - Expected Result 676 - ✅ 677 678 * - 1 679 - | Click the :guilabel:`Python Repl` window title 680 - Python Repl pane is focused 681 - |checkbox| 682 683 * - 2 684 - | Enter the following text and hit enter twice 685 | ``import time`` 686 | ``for i in range(10):`` 687 | ``print(i); time.sleep(1)`` 688 - | ``Running...`` should appear in the python with 689 | increasing integers incrementally appearing above 690 | (not all at once after a delay). 691 - |checkbox| 692 693Python Repl & Output 694^^^^^^^^^^^^^^^^^^^^^ 695 696.. list-table:: 697 :widths: 5 45 45 5 698 :header-rows: 1 699 700 * - # 701 - Test Action 702 - Expected Result 703 - ✅ 704 705 * - 1 706 - Click the ``Logs`` window title 707 - Log pane is focused 708 - |checkbox| 709 710 * - 2 711 - Click empty whitespace in the ``Python Results`` window 712 - Python Results pane is focused 713 - |checkbox| 714 715 * - 3 716 - Click empty whitespace in the ``Python Repl`` window 717 - Python Repl pane is focused 718 - |checkbox| 719 720 * - 4 721 - | Enter the following text and press :kbd:`Enter` to run 722 | ``[i for i in __builtins__ if not i.startswith('_')]`` 723 - | The results should appear pretty printed 724 | with each list element on it's own line: 725 | 726 | >>> [i for i in __builtins__ if not i.startswith('_')] 727 | [ 'abs', 728 | 'all', 729 | 'any', 730 | 'ascii' 731 | 732 - |checkbox| 733 734 * - 5 735 - | Enter the following text and press :kbd:`Enter` to run 736 | ``locals()`` 737 - | The results should appear pretty printed 738 - |checkbox| 739 740 * - 6 741 - | Enter the following text and press :kbd:`Enter` to run 742 | ``zzzz = 'test'`` 743 - | No new results are shown 744 | The previous ``locals()`` output does not show ``'zzzz': 'test'`` 745 - |checkbox| 746 747 * - 7 748 - | Enter the following text and press :kbd:`Enter` to run 749 | ``locals()`` 750 - | The output ends with ``'zzzz': 'test'}`` 751 - |checkbox| 752 753 * - 8 754 - | With the cursor over the Python Results, 755 | use the mouse wheel to scroll up and down. 756 - | The output window should be able to scroll all 757 | the way to the beginning and end of the buffer. 758 - |checkbox| 759 760 * - 9 761 - Click empty whitespace in the ``Python Repl`` window 762 - Python Repl pane is focused 763 - |checkbox| 764 765 * - 10 766 - | Enter the following text and press :kbd:`Enter` to run 767 | ``!ls`` 768 - | 1. Shell output of running the ``ls`` command should appear in the 769 | results window. 770 | 2. A new log window pane should appear titled ``Shell Output``. 771 | 3. The Shell Output window should show the command that was run and the 772 | output: 773 | ``$ ls`` 774 | ``activate.bat`` 775 | ``activate.sh`` 776 - |checkbox| 777 778Web Log Viewer 779^^^^^^^^^^^^^^ 780 781.. list-table:: 782 :widths: 5 45 45 5 783 :header-rows: 1 784 785 * - # 786 - Test Action 787 - Expected Result 788 - ✅ 789 790 * - 1 791 - | Start the pw console test mode by 792 | running ``pw console --test-mode`` 793 - | Console starts up showing an ``Fake Device`` window. 794 - |checkbox| 795 796 * - 2 797 - | Focus on ``Fake Device`` panel and press :kbd:`Shift-o` to enable web log viewer 798 - | This should hide log stream in the console and automatically copy the 799 | URL to log viewer to the clipboard 800 - |checkbox| 801 * - 3 802 - | Focus on the ``Fake Keys`` panel with a filter applied. Then press 803 | :kbd:`Shift-o` to enable another web log viewer for that new pane. Open the 804 | new URL in Chrome 805 - | This log viewer should have filters pre-applied 806 - |checkbox| 807 * - 4 808 - | Press :kbd:`Shift-o` again on both log panes to disable web log view 809 - | This should re-enable log stream in console and stop streaming logs to 810 | web view 811 - |checkbox| 812 813 814 815Early Startup 816^^^^^^^^^^^^^ 817 818.. list-table:: 819 :widths: 5 45 45 5 820 :header-rows: 1 821 822 * - # 823 - Test Action 824 - Expected Result 825 - ✅ 826 827 * - 1 828 - | Start the pw console test mode by 829 | running ``pw console --test-mode`` 830 - | Console starts up showing an ``All Logs`` window. 831 - |checkbox| 832 833 * - 2 834 - | Click the :guilabel:`All Logs` window title 835 | Press :kbd:`g` to jump to the top of the log history 836 - | These log messages should be at the top: 837 | ``DBG Adding plugins...`` 838 | ``DBG Starting prompt_toolkit full-screen application...`` 839 | ``DBG pw_console test-mode starting...`` 840 | ``DBG pw_console.PwConsoleEmbed init complete`` 841 - |checkbox| 842 843Quit Confirmation Dialog 844^^^^^^^^^^^^^^^^^^^^^^^^ 845 846.. list-table:: 847 :widths: 5 45 45 5 848 :header-rows: 1 849 850 * - # 851 - Test Action 852 - Expected Result 853 - ✅ 854 855 * - 1 856 - | Press :kbd:`Ctrl-d` 857 - | The quit dialog appears 858 - |checkbox| 859 860 * - 2 861 - | Press :kbd:`n` 862 - | The quit dialog disappears 863 - |checkbox| 864 865 * - 3 866 - | Press :kbd:`Ctrl-d` 867 - | The quit dialog appears 868 - |checkbox| 869 870 * - 4 871 - | Press :kbd:`y` 872 - | The console exits 873 - |checkbox| 874 875 * - 5 876 - | Restart the console and 877 | Press :kbd:`Ctrl-d` twice in quick succession. 878 - | The console exits 879 - |checkbox| 880 881 * - 6 882 - | Restart the console and Press :kbd:`F1` 883 - | The help window appears 884 - |checkbox| 885 886 * - 7 887 - | Press :kbd:`Ctrl-d` 888 - | The quit dialog appears on top of the help window 889 - |checkbox| 890 891 * - 8 892 - | Press :kbd:`n` 893 - | The quit dialog disappears and the help window is 894 | back in focus. 895 - |checkbox| 896 897 * - 9 898 - | Press :kbd:`q` 899 - | The help window disappears and the Python Repl is in focus. 900 - |checkbox| 901 902 * - 10 903 - | Type some text into the Python Repl. 904 | Press :kbd:`Home` or move the cursor to the 905 | beginning of the text you just entered. 906 | Press :kbd:`Ctrl-d` 907 - | Each :kbd:`Ctrl-d` press deletes one character 908 - |checkbox| 909 910 * - 11 911 - | Press :kbd:`Ctrl-c` to clear the Python Repl text 912 | Press :kbd:`Ctrl-d` 913 - | The quit dialog appears. 914 - |checkbox| 915 916Add note to the commit message 917============================== 918 919Add a ``Testing:`` line to your commit message and mention the steps 920executed. For example: 921 922.. code-block:: text 923 924 Testing: Log Pane Steps 1-6 925 926.. |checkbox| raw:: html 927 928 <input type="checkbox"> 929