
t = int(input())

for T in range(t):

    rows, columns = [int(i) for i in input().split()]

    maze = []
    goodppl = 0
    for row in range(rows):
        inp = input()
        maze.append([inp[i] for i in range(columns)])
        goodppl += maze[-1].count("G")

    possible = True

    if goodppl == 0:
        print("Yes")

    else:
        binaryMaze = [[0 for i in range(columns)] for q in range(rows)] #0 free, 1 good, 2 wall
        for row in range(rows):
            for column in range(columns):
                if maze[row][column] == "#":
                    binaryMaze[row][column] = 2
                elif maze[row][column] == "G":
                    binaryMaze[row][column] = 1
                elif maze[row][column] == "B":
                    if row > 0:
                        binaryMaze[row - 1][column] = 2
                    if row < rows - 1:
                        if maze[row + 1][column] == "G":
                            possible = False
                        binaryMaze[row + 1][column] = 2
                    if column > 0:
                        binaryMaze[row][column - 1] = 2
                    if column < columns - 1:
                        if maze[row][column + 1] == "G":
                            possible = False
                        binaryMaze[row][column + 1] = 2
        if binaryMaze[rows - 1][columns - 1] == 2:
            possible = False

        if not possible:
            print("No")
        else:
            def getNeighboors(coor):
                row, column = coor
                returning = []
                if row > 0:
                    returning.append((row - 1, column))
                if row < rows - 1:
                    returning.append((row + 1, column))
                if column > 0:
                    returning.append((row, column - 1))
                if column < columns - 1:
                    returning.append((row, column + 1))
                return returning

            def check(coor, equals):
                row, column = coor
                return (binaryMaze[row][column] == equals)

            gpplcounter = 0
            queue = [(rows - 1, columns - 1)]
            visited = [[False for column in range(columns)] for row in range(rows)]
            def checkVis(coor):
                row, column = coor
                return visited[row][column]
            def updateVis(coor):
                row, column = coor
                visited[row][column] = True

            while queue:
                current = queue.pop(0)
                for nei in getNeighboors(current):
                    if not checkVis(nei):
                        if check(nei, 0):
                            queue.append(nei)
                            updateVis(nei)
                        elif check(nei, 1):
                            queue.append(nei)
                            updateVis(nei)
                            gpplcounter += 1

            if gpplcounter == goodppl:
                print("Yes")
            else:
                print("No")
