def check_bad_guy(row_index, col_index, board):
    try:
        if board[row_index - 1][col_index] == 'B':
            return True
    except:
        pass

    try:
        if board[row_index + 1][col_index] == 'B':
            return True
    except:
        pass

    try:
        if board[row_index][col_index - 1] == 'B':
            return True
    except:
        pass

    try:
        if board[row_index][col_index + 1] == 'B':
            return True
    except:
        pass

    return False


def check_color(row_index, col_index, board_color):
    neighbouring_colors = list()
    try:
        if board_color[row_index - 1][col_index] != 0:
            neighbouring_colors.append(board_color[row_index - 1][col_index])
    except:
        pass

    try:
        if board_color[row_index][col_index - 1] != 0:
            neighbouring_colors.append(board_color[row_index][col_index - 1])
    except:
        pass
    return neighbouring_colors


def solve(board):
    n = len(board)
    m = len(board[0])
    if board[n - 1][m - 1] == 'B':
        return False
    color_connections = dict()
    available_color = 1
    board_color = [[0] * m for i in range(n)]
    """ print('starting board color')
    print(board_color) """
    good_guys = set()
    for row_index in range(n):
        for col_index in range(m):
            """ print('\n')
            print(f'row index {row_index}, col index {col_index}, symbol {board[row_index][col_index]}') """
            if board[row_index][col_index] == '.':
                if check_bad_guy(row_index, col_index, board):
                    board[row_index][col_index] == '#'
                else:
                    neighbouring_colors = check_color(row_index, col_index, board_color)
                    """ print(f'neighbouring color {neighbouring_colors}') """
                    if len(neighbouring_colors) == 0:
                        board_color[row_index][col_index] = available_color
                        color_connections[available_color] = set()
                        available_color += 1
                    elif len(neighbouring_colors) == 1:
                        board_color[row_index][col_index] = neighbouring_colors[0]
                    elif len(neighbouring_colors) == 2:
                        """ print(neighbouring_colors) """
                        board_color[row_index][col_index] = neighbouring_colors[0]
                        color_connections[neighbouring_colors[0]].add(neighbouring_colors[1])
                        color_connections[neighbouring_colors[1]].add(neighbouring_colors[0])
            elif board[row_index][col_index] == 'G':
                good_guys.add((row_index, col_index))
                if check_bad_guy(row_index, col_index, board):
                    return False
                else:
                    neighbouring_colors = check_color(row_index, col_index, board_color)
                    """ print(f'neighbouring color {neighbouring_colors}') """
                    if len(neighbouring_colors) == 0:
                        board_color[row_index][col_index] = available_color
                        color_connections[available_color] = set()
                        available_color += 1
                    elif len(neighbouring_colors) == 1:
                        board_color[row_index][col_index] = neighbouring_colors[0]
                    elif len(neighbouring_colors) == 2:
                        board_color[row_index][col_index] = neighbouring_colors[0]
                        color_connections[neighbouring_colors[0]].add(neighbouring_colors[1])
                        color_connections[neighbouring_colors[1]].add(neighbouring_colors[0])
    """ print('ending board color')
    print(board_color) """
    return evaluate_color(board_color, good_guys, color_connections)
     

def evaluate_color(board_color, good_guys, color_connections):
    """ print(board_color) """
    n = len(board_color)
    m = len(board_color[0])
    end_color = board_color[n - 1][m - 1]
    if len(good_guys) == 0:
        return True
    elif end_color == 0:
        return False
    end_connections = set()
    checked = dict()
    stack = [end_color]
    checked[end_color] = True
    while len(stack) != 0:
        current_color = stack.pop()
        end_connections.add(current_color)
        """ print(color_connections) """
        for color in color_connections[current_color]:
            if color not in checked:
                stack.append(color)
                checked[color] = True
    for (row_index, col_index) in good_guys:
        if board_color[row_index][col_index] not in end_connections:
            return False
    return True

                        


t = int(input())
for testcase in range(t):
    """ print(f'starting testcase {testcase}') """
    n, m = list(map(int, input().split()))
    board = [0] * n
    for row_index in range(n):
        board[row_index] = list(input())
    """ print('problem statement')
    print(board) """
    if solve(board):
        print('Yes')
    else:
        print('No')
    """ print(f'ending testcase {testcase}')
    print('\n') """

