You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: agent_ticket_email_signature_test.rb
    path of file: ./repos/zammad/test/browser
    
    the code of the file until where you have to start completion: # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/

require 'browser_test_helper'

class AgentTicketEmailSignatureTest < TestCase
  def test_agent_signature_check

    suffix          = SecureRandom.uuid
    signature_name1 = "sig name 1 äöüß #{suffix}"
    signature_body1 = "--\nsig body 1 äöüß #{suffix}"
    signature_name2 = "sig name 2 äöüß #{suffix}"
    signature_body2 = "--\nsig body 2 äöüß #{suffix}"
    group_name1     = "group name 1 #{suffix}"
    group_name2     = "group name 2 #{suffix}"
    group_name3     = "group name 3 #{suffix}"

    @browser = browser_instance
    login(
      username: 'admin@example.com',
      password: 'test',
      url:      browser_url,
    )
    tasks_close_all

    #
    # create groups and signatures
    #

    # create signatures
    signature_create(
      data: {
        name: signature_name1,
        body: signature_body1,
      },
    )
    signature_create(
      data: {
        name: signature_name2,
        body: signature_body2,
      },
    )

    # create groups
    group_create(
      data: {
        name:      group_name1,
        signature: si
    
  def test_agent_signature_check

    suffix          = SecureRandom.uuid
    signature_name1 = "sig name 1 äöüß #{suffix}"
    signature_body1 = "--\nsig body 1 äöüß #{suffix}"
    signature_name2 = "sig name 2 äöüß #{suffix}"
    signature_body2 = "--\nsig body 2 äöüß #{suffix}"
    group_name1     = "group name 1 #{suffix}"
    group_name2     = "group name 2 #{suffix}"
    group_name3     = "group name 3 #{suffix}"

    @browser = browser_instance
    login(
      username: 'admin@example.com',
      password: 'test',
      url:      browser_url,
    )
    tasks_close_all

    #
    # create groups and signatures
    #

    # create signatures
    signature_create(
      data: {
        name: signature_name1,
        body: signature_body1,
      },
    )
    signature_create(
      data: {
        name: signature_name2,
        body: signature_body2,
      },
    )

    # create groups
    group_create(
      data: {
        name:      group_name1,
        signature: signature_name1,
        member:    [
          {
            login:  'admin@example.com',
            access: 'full',
          },
        ],
      }
    )
    group_create(
      data: {
        name:      group_name2,
        signature: signature_name2,
        member:    [
          {
            login:  'admin@example.com',
            access: 'full',
          },
        ],
      }
    )
    group_create(
      data: {
        name:   group_name3,
        member: [
          {
            login:  'admin@example.com',
            access: 'full',
          },
        ],
      }
    )
    sleep 10 # wait until background job is processed

    #
    # check signature in new ticket
    #

    # reload instances to get new group permissions
    reload

    # create ticket
    ticket_create(
      data:          {
        customer: 'nicole',
        group:    'Users',
        title:    'some subject 5 - 123äöü',
        body:     'some body 5 - 123äöü',
      },
      do_not_submit: true,
    )

    # select group
    select(
      css:   '.active [name="group_id"]',
      value: group_name1,
    )

    # check content
    match(
      css:   '.active [data-name="body"]',
      value: 'some body 5',
    )

    # check signature
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body1,
      no_quote: true,
    )
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body2,
      no_quote: true,
    )

    # select create channel
    click(
      css: '.active [data-type="email-out"]',
    )

    # group 1 is still selected

    # check content
    match(
      css:   '.active [data-name="body"]',
      value: 'some body 5',
    )

    # check signature
    match(
      css:      '.active [data-name="body"]',
      value:    signature_body1,
      no_quote: true,
    )
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body2,
      no_quote: true,
    )

    # select group
    select(
      css:   '.active [name="group_id"]',
      value: group_name2,
    )

    # check content
    match(
      css:   '.active [data-name="body"]',
      value: 'some body 5',
    )

    # check signature
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body1,
      no_quote: true,
    )
    match(
      css:      '.active [data-name="body"]',
      value:    signature_body2,
      no_quote: true,
    )

    # select group
    select(
      css:   '.active [name="group_id"]',
      value: group_name3,
    )

    # check content
    match(
      css:   '.active [data-name="body"]',
      value: 'some body 5',
    )

    # check signature
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body1,
      no_quote: true,
    )
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body2,
      no_quote: true,
    )

    # select group
    select(
      css:   '.active [name="group_id"]',
      value: group_name1,
    )

    # check content
    match(
      css:   '.active [data-name="body"]',
      value: 'some body 5',
    )

    # check signature
    match(
      css:      '.active [data-name="body"]',
      value:    signature_body1,
      no_quote: true,
    )
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body2,
      no_quote: true,
    )

    # select create channel
    click(
      css: '.active [data-type="phone-out"]',
    )

    # check content
    match(
      css:   '.active [data-name="body"]',
      value: 'some body 5',
    )

    # check signature
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body1,
      no_quote: true,
    )
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body2,
      no_quote: true,
    )

    #
    # check signature in zoom ticket
    #
    ticket_create(
      data: {
        customer: 'nicole',
        group:    group_name1,
        title:    'some subject 5/2 - 123äöü',
        body:     'some body 5/2 - 123äöü',
      },
    )

    # execute reply
    click(
      css: '.active [data-type="emailReply"]',
    )

    # check if signature exists
    match(
      css:      '.active [data-name="body"]',
      value:    signature_body1,
      no_quote: true,
    )
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body2,
      no_quote: true,
    )

    # update group2
    select(
      css:   '.active [name="group_id"]',
      value: group_name2,
    )

    # execute reply
    sleep 5 # time to recognice form changes
    scroll_to(
      position: 'botton',
      css:      '.active [data-type="emailReply"]',
    )
    click(
      css: '.active [data-type="emailReply"]',
    )

    # check if signature exists
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body1,
      no_quote: true,
    )
    match(
      css:      '.active [data-name="body"]',
      value:    signature_body2,
      no_quote: true,
    )

    # discard changes
    sleep 2
    click(
      css: '.active .js-reset',
    )
    sleep 3

    # check if signature exists
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body1,
      no_quote: true,
    )
    match_not(
      css:      '.active [data-name="body"]',
      value:    signature_body2,
      no_quote: true,
    )

  end